想使用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]"
[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 不知道有没有先行者提出过这个方法,如有擂同,请告知,呵呵

嘿嘿 其实都是表面现象 一到Flash理论啊机质啊什么的就不会了 嘿嘿
OS还是在学校里做的那个 没什么改动。”疯狂坦克”你要不提我都忘记咧 哈哈
在长春呆得爽吧(口水ING)
你啥时候回家?
[Reply]
惭愧 惭愧 , 今天才看到你做的那几个演示作品,做得真好!!!
以前居然没注意到,疏忽了~~~[new17]
你的Flash太狠了 [Belial] 你应该找个publisher 出一本实用方面的书,以便推广。
不过你的仿OS,有点似曾相识阿 [new1] ,说! 是不是你在大学时候做得那个~~
你的仿疯狂坦克怎么不做了? 我感觉那东西真不错,起码在当时看来…(当时代码搞得我晕头转向,以为你是神人~)
今天给你免费当一把托儿了,以后办事可要找你了。 [new2]
[Reply]
To kaman:
呵呵,还在测试中。可惜还离不开要不断访问服务器来刷新这条路,要是有socket就好了 [new1]
[Reply]
to lianjie:
呵呵
[Reply]
那个what am I doing 很有趣。 [new2]
[Reply]
想买你的博客链接,但没找到其他联系方式,可以的话加我QQ 374837494
[Reply]
To JoMuncher:
那也没你牛,都带好多小弟了,我努力ING[new2]
[Reply]
小鸡 现在牛啊
[Reply]
又受教了,哈哈
[Reply]
To Kaman:
是啊,对编写程序增加了不少的麻烦
[Reply]
To Y-Boy:
[new2]
[Reply]
对中文的兼容性真是个问题. 尤其是ID3
[Reply]
沙发, 先顶一个!! 稍后再下载试试…哈.
[Reply]