原創(chuàng)|其它|編輯:郝浩|2012-05-31 22:25:07.000|閱讀 520 次
概述:FusionCharts允許你在圖表中使用多語言(UTF-8)字符。在下面的示例中,我們在圖表中使用了阿拉伯語名稱。從FusionCharts v3版本開始,你便可以在所有的FusionCharts圖表中使用多語言字符。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
FusionCharts允許你在圖表中使用多語言(UTF-8)字符。在下面的示例中,我們在圖表中使用了阿拉伯語名稱。從FusionCharts v3版本開始,你便可以在所有的FusionCharts圖表中使用多語言字符。
注意:目前FusionCharts只支持從左到右語言。不具有像希伯來文等從右到左語言的原生支持。因此,如果你想在FusionCharts中使用希伯來文,你就必需通過編程方式來更改文本序列,然后將數(shù)據(jù)提供給FusionCharts。
若要在圖表上使用多語言字符,你一定得使用UTF-8編碼的XML。更重要的是,XML文件/流確實(shí)需要一個(gè)BOM標(biāo)記來作為前3個(gè)字節(jié)的文件。因此,我們必須記住兩個(gè)基本的規(guī)則:
dataURL方法:XML文件/流應(yīng)具有BOM標(biāo)記。
dataXML方法:HTML /應(yīng)用程序文件包含XML并且圖表SWF應(yīng)該帶有BOM標(biāo)記。
注意:什么是BOM?BOM是Byte Order Mark的縮寫,意思是字節(jié)次序標(biāo)記。例如,EF BB EF 這三個(gè)字節(jié)在UTF-8編碼文件的情況下,BOM被置于文件的開始位置。它標(biāo)識(shí)著該文件包含了UTF-8編碼字符串。
值得注意的是,如果沒有BOM標(biāo)記,F(xiàn)usionCharts圖表會(huì)產(chǎn)生亂碼字符。比較以下2張圖片:
Standard (with BOM)
Gibberish (without BOM)
1、在靜態(tài)XML中
對于一次性生成和保持靜態(tài)的XML文件,你可以手動(dòng)插入一個(gè)BOM標(biāo)記。當(dāng)使用dataURL方法將數(shù)據(jù)從文件中檢索出來時(shí),就適用該方法。你所需要做的就是,確保含有XML數(shù)據(jù)的文件中包含了BOM標(biāo)記,若是沒有BOM標(biāo)記,那么就指定一個(gè)。若要指定一個(gè)BOM標(biāo)記,請按照下列步驟:
a、在文本編輯器中打開有問題的文件,如下圖所示(以Windows Notepad為例)。
b、打開“保存”菜單,并指定文件名,文件類型,編碼和BOM標(biāo)記(如果該選項(xiàng)可用)。
c、保存文件。
下圖為,如何在Windows Notepad中指定BOM標(biāo)記
下圖為,如何在Dreamweaver for mac中指定BOM標(biāo)記
2、使用服務(wù)器端腳本動(dòng)態(tài)生成XML
在大多數(shù)情況下,你不會(huì)用到物理數(shù)據(jù)文件。相反地,你有自己的服務(wù)器端腳本,它幾乎可以將XML數(shù)據(jù)文件傳遞到圖表中。因此,它無需手動(dòng)維護(hù)。相反,你必須寫服務(wù)器端腳本中編寫一些代碼來添加BOM標(biāo)記。當(dāng)UTF-8編碼字符串從數(shù)據(jù)庫和類似場所進(jìn)行檢索時(shí),以下方式最實(shí)用,你可選擇其中一個(gè)執(zhí)行:
*手動(dòng)添加BOM到XMLrelayer腳本文件--就像添加BOM標(biāo)記到靜態(tài)XML文件一樣,你也可以將BOM文件添加到服務(wù)器端。在你編碼之前,當(dāng)你首次創(chuàng)建腳本文件時(shí),你就需要這樣做。
*使用腳本編寫B(tài)OM--在大多數(shù)情況下,XML RELAYER腳本文件可能會(huì)被創(chuàng)建成ANSI編碼格式。在這種情況下,在開始輸出流的時(shí)候,你就得使用腳本來添加BOM。此外,當(dāng)一個(gè)服務(wù)器端腳本創(chuàng)建一個(gè)XML文件時(shí),所添加的BOM標(biāo)記,應(yīng)該被看作文件的前3個(gè)字節(jié)。
下面的例子中,我們利用了主要的服務(wù)端技術(shù)來實(shí)現(xiàn)BOM標(biāo)記:
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
(慧都控件網(wǎng)版權(quán)所有,轉(zhuǎn)載請注明出處,否則追究法律責(zé)任)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)