在Actionscript 3.0中使用XMLSocket读取特殊字符

时间:2016-05-19 06:45:21

标签: .net xml sockets actionscript-3 flash

使用 as3 中的 XMLSocket 类我试图读取包含使用类用于通信。日志正确显示数据。但是当我在as3中获得它时,所有特殊字符都被'?'取代。我认为这将是一个字体问题。但尝试嵌入字体并获得相同的结果。如果我使用 URLLoader 读取包含特殊字符的文件,那么一切正常。但是当我尝试使用flash XMLSocket 类读取.net服务器发送的数据时,将替换特殊字符。 我们需要在.net 套接字类或某处设置任何编码,还是可以从客户端(flash as3)本身解决?

提前致谢

2 个答案:

答案 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