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


使用

as3 中的 XMLSocket 类,我尝试读取包含特殊字符(包括中文符号)的字符串,该字符串由使用 c# 中的套接字类进行通信的 .NET 服务器发送。日志正确显示数据。但是当我在 as3 中得到它时,所有特殊字符都被替换为"?"。我以为这会是一个字体问题。但是尝试嵌入字体并得到了相同的结果。如果我使用 URLLoader 读取具有特殊字符的文件,那么一切都是正确的。但是当我尝试使用 flash XMLSocket 类读取 .net 服务器发送的数据时,特殊字符被替换了。我们是否需要在 .net Socket 类或某个地方设置任何编码,或者可以从客户端(flash as3)本身解决?

提前致谢

下面是

一些快速的示例代码,您可以尝试使用 XML 文本。由于我没有服务器向我发送XML或一些套接字代码设置,因此我将像这样重新创建您收到的数据...

<xml>
    <root> 
    <name>chinese</name>
    <value>嗨</value> 
    </root>
</xml>;

最重要的是只使用一种字体(Arial)在一个文本字段中显示英文和中文文本。希望它对你有用,并给你一个起点。另请注意,在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;

最后我找到了这个错误。我的 .NET 服务器使用的是Default编码,根据服务器运行的系统,该编码会有所不同。我尝试对服务器使用 UTF8 编码,它起作用了。如果服务器发送以 UTF8 编码的文本,那么XMLSocket也将能够获取 Unicode 字符,因为它使用 UTF8。添加我的引用编码.默认属性

最新更新