AIR:在HTML组件中显示中文

想使用HTML组件来显示一些含HTML标签的字符串,但发现字串里的中文全部变成了乱码。
如果直接使用组件的location属性设置url的话,可以正常显示网页里的中文。
初步推断是页面编码的原因。
没有在文档里查到设置页面编码的属性或方法,正常来说应该是没有的,因为加载页面时会读取网页中的META部分设置编码。(本人对AIR了解有限,如果有更好的方法,请留言)
可以把字符串包含在HTML的标签中并在HTML标签中设置页面字符编码,就可以正常显示中文了
令人欣慰的是,这种方法可行!
程序运行如下:
使用自定义类显示中文字符:

未使用(显示的是乱码):

下面对主要代码进行一下简单的解释:
[code][color=#00a0c0]public [color=#00a0c0]static const beginHtml[color=#0000ff]:[color=#0000a0]String [color=#0000ff]= [color=#ff00ff]"<\/HEAD>"[color=#0000ff];
[color=#00a0c0]public [color=#00a0c0]static const endHtml[color=#0000ff]:[color=#0000a0]String [color=#0000ff]= [color=#ff00ff]"<\/BODY><\/HTML>"[color=#0000ff];
[color=#00a0c0]public [color=#800000]function HtmlSetter[color=#0000ff]([color=#0000ff])
[color=#0000ff]{
[color=#0000ff]}
[color=#008080]//重新组合,添加HTML头及尾部字符串
[color=#00a0c0]public [color=#00a0c0]static [color=#800000]function getHtmlText[color=#0000ff](htmlStr[color=#0000ff]:[color=#0000a0]String[color=#0000ff])[color=#0000ff]:[color=#0000a0]String
[color=#0000ff]{
[color=#800000]return beginHtml[color=#0000ff]+htmlStr[color=#0000ff]+endHtml[color=#0000ff];
[color=#0000ff]}
[color=#008080]//首先过滤掉begin和end的字符串,再调用getHtmlText,添加begin和end
[color=#00a0c0]public [color=#00a0c0]static [color=#800000]function appendHtmlText[color=#0000ff](oldStr[color=#0000ff]:[color=#0000a0]String[color=#0000ff], appendStr[color=#0000ff]:[color=#0000a0]String[color=#0000ff])[color=#0000ff]:[color=#0000a0]String
[color=#0000ff]{
[color=#800000]var myPatternBegin[color=#0000ff]:RegExp [color=#0000ff]= [color=#800000]new RegExp[color=#0000ff](beginHtml [color=#0000ff],[color=#ff00ff]"i"[color=#0000ff])[color=#0000ff];
[color=#800000]var myPatternEnd[color=#0000ff]:RegExp [color=#0000ff]= [color=#800000]new RegExp[color=#0000ff](endHtml [color=#0000ff],[color=#ff00ff]"i"[color=#0000ff])[color=#0000ff];
oldStr [color=#0000ff]= oldStr[color=#0000ff].replace[color=#0000ff](myPatternBegin[color=#0000ff], [color=#ff00ff]""[color=#0000ff])[color=#0000ff];
oldStr [color=#0000ff]= oldStr[color=#0000ff].replace[color=#0000ff](myPatternEnd[color=#0000ff], [color=#ff00ff]""[color=#0000ff])[color=#0000ff];
[color=#800000]return getHtmlText[color=#0000ff](oldStr[color=#0000ff]+appendStr[color=#0000ff])[color=#0000ff];
[color=#0000ff]}[/code]
首先定义头尾要加入的字符串beginHtml和endHtml
getHtmlText方法将输入字符串进行组装然后返回
appendHtmlText方法将输入字符串去头尾的beginHtml和endHtml,得到原始的输入字符串,然后附加新增的字符串,最后再使用getHtmlText方法返回。
原理很简单,是一种不算办法的办法,呵呵
安装文件及源码(运行环境AIR Beta3,编辑环境:FLEX Builder3 Beta3):
下载文件 点击下载此文件
P.S 不知道有没有先行者提出过这个方法,如有擂同,请告知,呵呵

13 comments to AIR:在HTML组件中显示中文

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">