Flash图表组件FusionCharts帮助文档五:用BOM实现多语言(UTF-8)

要使用Flash图表组件 FusionCharts 中的多语言属性,需运用UTF-8编码的XML。值得注意的一点是,XML文件/流需要一个BOM(字节顺序标记-表明一个文件中是否包含UTF-8编码字符串)作为文件的头三个字节。所以,请记住两个最基本的规则:

  • 对于dataURL方法- XML文件/流应该有BOM;
  • 对于dataXML方法- HTML /应用程序文件包含XML,图表SWF也应该有BOM。

没有BOM标记,图表中会产生一些异常数据,如下图:

Flash图表组件FusionCharts帮助文档五:用BOM实现多语言(UTF-8)_第1张图片

                               有BOM标记

Flash图表组件FusionCharts帮助文档五:用BOM实现多语言(UTF-8)_第2张图片

                              无BOM标记

如何添加BOM

1、向静态XML文件中添加BOM

对于一次性生成的静态XML文件,可以手动添加一个BOM标记,这个方法适用于用dataURL方法检索文件中数据的时候,你只需要确保文件中包含带有BOM标记的XML数据。如果没有,就要添加一个BOM进去。步骤如下:

  • 在一个支持UTF-8编码(如Windows记事本)并带有BOM标记的文本编辑器中打开文件;
  • 打开"保存"菜单并指定文件名、文件类型、编码和BOM标记(如果可以的话);
  • 保存文件。

如图所示:

Flash图表组件FusionCharts帮助文档五:用BOM实现多语言(UTF-8)_第3张图片

2、用服务器端脚本动态生成XML

要用服务器端脚本生成XML,有以下两种方法:

  • 手动添加BOM到XML中转脚本文件。正如你可以向静态XML文件添加BOM标记一样,你也可以向动态生成XML的服务器端文件添加BOM。
  • 用脚本写BOM。大多数情况下,XML中转脚本文件是由ANSI编码的,那就需要在最开始的输出流中用脚本添加BOM。此外,当服务器端脚本创建了一个XML文件时,它应该将BOM标记作为文件的头三个字节。

以下是不同语言添加BOM的方式:

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 

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 

PHP

header ( 'Content-type: text/xml' );
echo pack ( "C3" , 0xef, 0xbb, 0xbf );
// Now write your XML data to output stream 

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 

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 

CodeFusion

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 

ROR

utf8_arr = [0xEF,0xBB,0xBF]
utf8_str = utf8_arr.pack("c3")
# Now write your XML data to output stream 

你可能感兴趣的:(FusionCharts)