一开始是用str方式从串口中读取数据。然后在网上找了一堆utf8转gb2312的代码.并没有什么用。
然后就像是不是不应该以string的方式读取。果然,解决了问题。
串口接收中文数据代码:
/******************接收部分**********************************/
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//串口数据接收事件
{
if (!radioButton3.Checked)//如果接收模式为字符模式
{
//string str = serialPort1.ReadExisting();//字符串方式读
int str = serialPort1.BytesToRead;//byte方式读
//接收到的str数据中有中文,编码成GB2312,可正常显示中文
byte[] bytes = new byte[str];
serialPort1.Read(bytes, 0, str);
string str1 = System.Text.Encoding.Default.GetString(bytes);
textBox1.AppendText(str1);//添加内容。AppendText函数等同:textBox1.Text += str;即在尾部添加,不清空前面接收的字符
}
else//如果接收模式为数值接收