我正在使用闪光灯从一个UTF8页面读取内容,其中有统一码在它。问题是,当Flash加载数据时,它会显示?取而代之的是全unicode。
可能的问题是什么?
发布于 2012-03-27 20:15:12
默认情况下,Flash将字符串视为使用UTF-8编码。您看到可能替换不可打印字符或无效/缺少字形的字符的原因可能是您将System.useCodepage
设置为true
-如果发生了这种情况,那么您为什么要这样做?
否则,用于显示字符的字体可能缺少所需字符的字形。您可以使用Font.hasGlyphs("string with the glyphs");
进行检查,以确保文本可以显示。这通常只适用于嵌入式字体。
另一种可能是您试图显示的源文本不是UTF-8编码的字符串。一些特别流行的文件格式,例如XML和HTML,有时使用与实际有效负载无关的格式声明(例如,XML tag:<?xml encoding="utf-8" ?>
可以附加到任何XML,而不管文档的实际编码)。为了确保文本采用UTF-8格式,将其作为ByteArray读取,并验证每个字节的第一位是否设置为0。使用国家字符的单字节编码使用第一位对其字符进行编码,而UTF-8从不这样做。
发布于 2012-03-27 20:19:48
Flash内部使用UTF-8表示字符串,因此如果整个堆栈使用UTF-8编码应该不会有问题。
在此过程中,您可能有一个隐式的解码/编码步骤。不幸的是,这可能真的是一百万件事情。从头开始,插入跟踪和/或日志消息以查看转换失败的位置。确保您的XML内容使用UTF-8,特别是如果您正在使用PHP,请确保所有PHP源文件都以UTF-8编码保存-在简单的文本编辑器中编辑PHP文件通常会生成Windows/Mac格式的源文件,这将破坏您的字符编码。此外,验证HTML请求/响应标头,以查看是否存在编码不匹配。
https://stackoverflow.com/questions/9888823
复制相似问题