彩票走势图

如何使用FusionCharts中的多语言字符?

原创|其它|编辑:郝浩|2012-05-31 22:25:07.000|阅读 497 次

概述:FusionCharts允许你在图表中使用多语言(UTF-8)字符。在下面的示例中,我们在图表中使用了阿拉伯语名称。从FusionCharts v3版本开始,你便可以在所有的FusionCharts图表中使用多语言字符。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

FusionCharts允许你在图表中使用多语言(UTF-8)字符。在下面的示例中,我们在图表中使用了阿拉伯语名称。从FusionCharts v3版本开始,你便可以在所有的FusionCharts图表中使用多语言字符。

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张图片:

FusionCharts,图表,多语言,多语言字符
Standard (with BOM)

FusionCharts,图表,多语言,多语言字符
Gibberish (without BOM)

如何添加BOM?

1、在静态XML中

对于一次性生成和保持静态的XML文件,你可以手动插入一个BOM标记。当使用dataURL方法将数据从文件中检索出来时,就适用该方法。你所需要做的就是,确保含有XML数据的文件中包含了BOM标记,若是没有BOM标记,那么就指定一个。若要指定一个BOM标记,请按照下列步骤:
a、在文本编辑器中打开有问题的文件,如下图所示(以Windows Notepad为例)。
b、打开“保存”菜单,并指定文件名,文件类型,编码和BOM标记(如果该选项可用)。
c、保存文件。

下图为,如何在Windows Notepad中指定BOM标记

FusionCharts,图表,多语言,多语言字符

下图为,如何在Dreamweaver for mac中指定BOM标记

FusionCharts,图表,多语言,多语言字符

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@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP