0

我从外部 XML 读取文本时遇到问题。Flash 似乎对 (32-127) 的 ascii 字符没有问题,但它无法显示扩展字符 (128 - 255)。在那个 XML 中,我有例如“(DEC:132)和“(DEC:147)。在 XML 中,这些字符不可见,但仍然存在。Flash 无法显示它们。我的方法是获取每个 charCode 并将其转换为字符串,但这仅适用于可打印字符。

var textToConvert:String = xml.parameters.text[1].value;
            trace("LENGTH = "+textToConvert.length);
            var test:String="";
            for(var i:int=1;i<textToConvert.length;i++){
                trace(textToConvert.charCodeAt(i));
                //OCT
                trace(textToConvert.charCodeAt(i).toString(8));
                //HEX
                trace(textToConvert.charCodeAt(i).toString(16));
                //HEX
                test += textToConvert.charCodeAt(i).toString(16);
                trace("SYMBOL : " +String.fromCharCode(textToConvert.charCodeAt(i)))
            }
            trace("TEST: "+test);

结果:

76

114

4c

符号:L

132

204

84

符号:(不可见)

我正在做的下一件事是将转义序列附加到每个字符“\ x”到十六进制值,然后将其转换为字符串,但这也不起作用:

s = "\x93\x93\x84\x93\x84";

            ba.writeMultiByte(s,"ASCII");
            trace(s);

这是我的第一种方法(不起作用):

var byteArray:ByteArray = new ByteArray();
byteArray.writeMultiByte(textToConvert,"iso-8859-1");
trace("HIER: "+byteArray.readUTFBytes(byteArray.bytesAvailable));

解决这个问题的通用方法是什么?

这是 xml,它有隐藏的 ascii 字符(引号)。我想解析节点的值,包括这些字符:

XML-DL

4

1 回答 1

0

AS3 字符串在内部被编码为 16 位 Unicode。他们支持你的角色。它也正确解码了它,因为它已经读取了正确的字符代码。

用于输出的字体是否具有能够呈现它的字形?这甚至适用于 AS3 控制台。您的 char 不是“空的”,它只是无法绘制它。如果您更改跟踪以在字符的任一侧包含引号,您会看到它仍然写入空白空间。

如果您将其转储到 TextField 而不是使用您知道具有正确支持的字体,那么它应该可以按预期工作。

如果这不能满足您的需求,那么您将需要进行某种转换。没有公认的图书馆可以做到这一点,因为它取决于您的需要。应该如何处理通常需要多个来表示它们的单个字符?ø 通常翻译为 'oe',但可能不适合固定长度的字符串。大多数希伯来文、西里尔文、阿拉伯文等字母都没有对应关系。你想对这些应用什么规则?您需要确定您需要什么,然后进行符合这些要求的转换(或选择满足它的库)。

于 2013-12-06T16:14:26.250 回答