使用 as3 中的 XMLSocket 类我试图读取包含使用类用于通信。日志正确显示数据。但是当我在as3中获得它时,所有特殊字符都被'?'取代。我认为这将是一个字体问题。但尝试嵌入字体并获得相同的结果。如果我使用 URLLoader 读取包含特殊字符的文件,那么一切正常。但是当我尝试使用flash XMLSocket 类读取.net服务器发送的数据时,将替换特殊字符。 我们需要在.net 套接字类或某处设置任何编码,还是可以从客户端(flash as3)本身解决?
提前致谢
答案 0 :(得分:0)
以下是您可以尝试使用XML文本的一些快速示例代码。由于我没有服务器向我发送XML或一些Socket代码设置,我将重新创建您收到的数据,如此...
<xml>
<root>
<name>chinese</name>
<value>嗨</value>
</root>
</xml>;
最重要的是展示英语和只使用一种字体( Arial )在一个文本字段中显示中文文本。希望它对你有用&amp;给你一个起点。另请注意,在IDE(代码和跟踪)中,中文字符是正方形(▖
),但 Arial 字体可以将其显示为真实字符形状(嗨
)。
测试代码(只需粘贴和编译)...
// # 1) Make text box to display XML content
var txtBox : TextField = new TextField();
var txtFmt : TextFormat = new TextFormat();
txtFmt.font = "Arial"; txtFmt.color = 0x00CCFF;
//txtFmt.align = TextFormatAlign.CENTER;
txtFmt.bold = true; txtFmt.size = 35;
txtBox.selectable = true;
txtBox.defaultTextFormat = txtFmt;
txtBox.width = 200; txtBox.height = 40;
addChild (txtBox);
// #2 Make XML (You already have this part coming from Socket & Server)
var myXML : XML = "<xml > <root> <name>chinese</name> <value>嗨</value> </root> </xml>";
//trace( "check name : " + ( myXML.root.name) );
//trace( "check value : " + ( myXML.root.value) );
// # 3 Update text box on stage to see output
txtBox.text = myXML.root.name + " " + myXML.root.value;
答案 1 :(得分:0)
最后我发现了这个错误。我的 .NET 服务器正在使用Default
编码,这取决于运行服务器的系统。我尝试使用 UTF8 编码服务器,但它确实有效。如果服务器正在发送以 UTF8 编码的文本,则XMLSocket
也可以获取Unicode字符,因为它使用 UTF8 。添加我的参考Encoding.Default Property