C# 串行端口接收??chars,编码不对

C# 串行端口接收??chars,编码不对,c#,serial-port,xbee,C#,Serial Port,Xbee,在SerialPort.Write的文档中,使用MS表示: 默认情况下,SerialPort使用AscienceODing对字符进行编码。AscienceODing将大于127的所有字符编码为(字符)63或“?”。要支持该范围内的其他字符,请将编码设置为UTF8Encoding、UTF32Encoding或Unicode编码 有人知道我是如何将serialport的编码设置为该选项之一的吗?使用System.IO.Ports.serialport.Encoding属性如何 像这样: Encodi

在SerialPort.Write的文档中,使用MS表示: 默认情况下,SerialPort使用AscienceODing对字符进行编码。AscienceODing将大于127的所有字符编码为(字符)63或“?”。要支持该范围内的其他字符,请将编码设置为UTF8Encoding、UTF32Encoding或Unicode编码


有人知道我是如何将serialport的编码设置为该选项之一的吗?

使用System.IO.Ports.serialport.Encoding属性如何

像这样:

Encoding enc = new UTF8Encoding(true, true);
YourPort.Encoding = enc;

答案在您的问题中包含的文本中:

要支持该范围内的其他字符,请设置为、UTF32编码或Unicode编码


您很可能希望找到并应用正确的编码,如Windows-1252 as。

您找到了SerialPort.Write方法和文档,但没有查看SerialPort类的所有属性??同样,在你发布的内容中已经有了答案——再读一遍!提示:将编码设置为…我想知道如何设置,我知道编码类型存在。你几乎不理解我的问题,我这样做:serialPort1.Encoding=Encoding.GetEncoding(“Windows-1252”)@如果我是你,我也不会相信W1252。这是上个世纪的技术,不能保证你的客户只会使用适合你的角色。UTF-8可以处理每个unicode字符。感谢您的帮助,我尝试使用serialPort1。Encoding=Encoding.UTF8;它可以工作,我更喜欢:)@mg30rg和一个通过串口连接的古老设备应该支持UTF-8吗?这完全取决于设备,请参阅手册以获取要使用的编码。@CodeCaster古代设备也不支持W1252。它将与本机不支持的ASCII256配合使用。