原創|其它|編輯:郝浩|2012-05-31 22:25:07.000|閱讀 520 次
概述:FusionCharts允許你在圖表中使用多語言(UTF-8)字符。在下面的示例中,我們在圖表中使用了阿拉伯語名稱。從FusionCharts v3版本開始,你便可以在所有的FusionCharts圖表中使用多語言字符。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
FusionCharts允許你在圖表中使用多語言(UTF-8)字符。在下面的示例中,我們在圖表中使用了阿拉伯語名稱。從FusionCharts v3版本開始,你便可以在所有的FusionCharts圖表中使用多語言字符。
注意:目前FusionCharts只支持從左到右語言。不具有像希伯來文等從右到左語言的原生支持。因此,如果你想在FusionCharts中使用希伯來文,你就必需通過編程方式來更改文本序列,然后將數據提供給FusionCharts。
若要在圖表上使用多語言字符,你一定得使用UTF-8編碼的XML。更重要的是,XML文件/流確實需要一個BOM標記來作為前3個字節的文件。因此,我們必須記住兩個基本的規則:
dataURL方法:XML文件/流應具有BOM標記。
dataXML方法:HTML /應用程序文件包含XML并且圖表SWF應該帶有BOM標記。
注意:什么是BOM?BOM是Byte Order Mark的縮寫,意思是字節次序標記。例如,EF BB EF 這三個字節在UTF-8編碼文件的情況下,BOM被置于文件的開始位置。它標識著該文件包含了UTF-8編碼字符串。
值得注意的是,如果沒有BOM標記,FusionCharts圖表會產生亂碼字符。比較以下2張圖片:
Standard (with BOM)
Gibberish (without BOM)
1、在靜態XML中
對于一次性生成和保持靜態的XML文件,你可以手動插入一個BOM標記。當使用dataURL方法將數據從文件中檢索出來時,就適用該方法。你所需要做的就是,確保含有XML數據的文件中包含了BOM標記,若是沒有BOM標記,那么就指定一個。若要指定一個BOM標記,請按照下列步驟:
a、在文本編輯器中打開有問題的文件,如下圖所示(以Windows Notepad為例)。
b、打開“保存”菜單,并指定文件名,文件類型,編碼和BOM標記(如果該選項可用)。
c、保存文件。
下圖為,如何在Windows Notepad中指定BOM標記
下圖為,如何在Dreamweaver for mac中指定BOM標記
2、使用服務器端腳本動態生成XML
在大多數情況下,你不會用到物理數據文件。相反地,你有自己的服務器端腳本,它幾乎可以將XML數據文件傳遞到圖表中。因此,它無需手動維護。相反,你必須寫服務器端腳本中編寫一些代碼來添加BOM標記。當UTF-8編碼字符串從數據庫和類似場所進行檢索時,以下方式最實用,你可選擇其中一個執行:
*手動添加BOM到XMLrelayer腳本文件--就像添加BOM標記到靜態XML文件一樣,你也可以將BOM文件添加到服務器端。在你編碼之前,當你首次創建腳本文件時,你就需要這樣做。
*使用腳本編寫BOM--在大多數情況下,XML RELAYER腳本文件可能會被創建成ANSI編碼格式。在這種情況下,在開始輸出流的時候,你就得使用腳本來添加BOM。此外,當一個服務器端腳本創建一個XML文件時,所添加的BOM標記,應該被看作文件的前3個字節。
下面的例子中,我們利用了主要的服務端技術來實現BOM標記:
Using ASP.NET C#
Response.ContentType = "text/xml; characterset=utf-8" ;
Response.BinaryWrite( new byte[] { 0xEF, 0xBB, 0xBF }
// Now write your XML data to output stream
Using ASP.NET VB
Response.ContentType = "text/xml"
Dim UTFHeader() As Byte = {&HEF, &HBB, &HBF}
Response.BinaryWrite(UTFHeader)
// Now write your XML data to output stream
Using PHP
header ( 'Content-type: text/xml' );
echo pack ( "C3" , 0xef, 0xbb, 0xbf );
// Now write your XML data to output stream
Using ASP
Response.AddHeader "Content-Type", "text/xml;charset=UTF-8"
Response.CodePage = 65001"
Response.BinaryWrite( chrb(239) )
Response.BinaryWrite( chrb(187) )
Response.BinaryWrite( chrb(191) )
// Now write your XML data to output stream
Using J2EE
response.setContentType( "text/xml; charset=UTF-8" );
OutputStream outs = response.getOutputStream();
outs.write( new byte[]{(byte)0xEF, (byte)0xBB, (byte)0xBF} );
outs.flush();
// Now write your XML data to output stream
Using ColdFusion
context = getPageContext();
response = context.getResponse().getResponse();
out = response.getOutputStream();
out.write(239);
out.write(187);
out.write(191);
// Now write your XML data to output stream
Using ROR
utf8_arr = [0xEF,0xBB,0xBF]
utf8_str = utf8_arr.pack("c3")
# Now write your XML data to output stream
(慧都控件網版權所有,轉載請注明出處,否則追究法律責任)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網