我正在使用flash从UTF8页面读取内容,其中包含unicode。 问题是当Flash加载数据时它会显示????????而是所有的unicode。
可能是什么问题?
答案 0 :(得分: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 :(得分:1)
Flash内部使用UTF-8来表示字符串,因此如果整个堆栈使用UTF-8编码,则应该没有问题。
你可能在某个地方有一个隐式的解码/编码步骤。 不幸的是,这可能真的是一百万件事。从头开始,插入跟踪和/或日志消息以查看转换失败的位置。确保您的XML内容使用UTF-8,特别是如果您使用的是PHP,请确保所有PHP源文件都以UTF-8编码保存 - 在简单的文本编辑器中编辑PHP文件通常会导致Windows / Mac格式源文件,然后将破坏您的字符编码。此外,验证HTML请求/响应标头以查看是否存在编码不匹配。