2012-03-27 34 views
0

我正在使用flash从UTF8页面读取内容,该页面中包含unicode。 问题是,当Flash加载数据时显示????????而不是所有的unicode。在Flash上​​显示utf8?

可能是什么问题?

回答

1

默认情况下,Flash将字符串视为使用UTF-8编码。您看到可能会替换不可打印字符或无效/丢失字形的字符的原因可能是您将System.useCodepage设置为true - 如果发生了这种情况,那么为什么要这样做?

否则,用于显示字符的字体可能会丢失所需字符的字形。您可以使用Font.hasGlyphs("string with the glyphs");来确认文本是否可以显示。这通常只适用于嵌入字体。

另一种可能性是您尝试显示的源文本不是UTF-8编码的字符串。一些特别流行的文件格式,例如XML和HTML,有时会使用与实际有效负载无关的格式声明(例如XML标记:<?xml encoding="utf-8" ?>可以附加到任何XML,而不考虑文档的实际编码)。为了确保文本采用UTF-8格式,请将其作为ByteArray读取,并验证每个字节的第一位是否设置为0.使用国家字符的单字节编码使用第一位编码字符,而UTF-8从来没有这样做。

1

Flash内部使用UTF-8来表示字符串,因此如果整个堆栈使用UTF-8编码,则应该没有问题。

你可能有一个隐含的解码/编码步骤。 不幸的是,这真的可能是一百万件事情。从头开始,插入跟踪和/或日志消息,以查看转换失败的位置。确保你的XML内容使用UTF-8,特别是如果你使用PHP,确保所有PHP源文件都以UTF-8编码保存 - 在简单的文本编辑器中编辑PHP文件常常导致Windows/Mac格式源文件,然后将破坏你的字符编码。另外,验证HTML请求/响应标题以查看是否存在编码不匹配。