2013-09-16 59 views
3

我有一个应用程序,它允许交换消息和我试图发送一个字符串包含特殊字符发送特殊字符串口

string my_str = "isto não está a funcionar! (pt)"; 
comPort1.Write(my_str); 

但我收到isto n?o est? a funcionar! (pt)

我试图把comPort1.Encoding = Encoding.UTF8;之前,但它还没有工作。我尝试了不同的编码。

+2

你是如何和在哪里收到提到的输出?编码设置是否正确? – x29a

+0

你需要把这个编码放在发送者和接收者上。如果接收者读取字节并转换为字符串,则需要使用'Encoding.Utf8.GetString'而不是'Encoding.ASCII.GetString'。 –

+0

@ x29a我创建了一个应用程序来交换消息。该输出使用默认编码(ASCII?)。如果我使用'comPort1.Encoding = Encoding.UTF8;'我得到的是同样的东西,但'?'是其他字符 – mafap

回答

4

如果将字符串的编码字节写入端口,它们将被正确发送。 这段代码将为你做的伎俩:

string my_str = "isto não está a funcionar! (pt)"; 
byte[] my_bytes = System.Text.Encoding.UTF8.GetBytes(str); 
comPort1.Write(my_bytes, 0, my_bytes.Length); 
+0

感谢,但我有这个工作,就像我在我最后的评论:) – mafap

+0

@mafap是的,你说得对我没有'阅读所有评论;) – arianoo