前言
遇到arduino串口输出的数据乱码这个问题的时候一度以为是串口助手有问题,因为在arduino自带的串口监视器里面输出的中文是正常的
第一步操作:更换串口助手,包括XCOM、安信可串口助手、COM-HC、甚至STC下载软件里面的串口也试过,开始判断估计不是串口助手的问题,毕竟这么多串口助手不太可能都有问题
第二步:更改波特率,无效
第三步:开始尝试输出英文,数字以及一些奇怪的字符,结果都是正常的,唯独只有中文是不正常的
突然想到会不会是编码格式的问题,下面着手测试确定
串口输出中文
默认编码输出
编写串口输出代码如下,115200波特率,输出中文 您好!
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("您好!");
delay(1000);
}
记得加上 1秒 延时,不然串口会疯狂输出,加上回车方便观察!
打开arduino串口监视器查看

arduino串口监视器输出正常
接着打开XCOM串口监视器查看输出,记得关闭原来arduino的串口监视器不然XCOM会打不开

输出乱码,到这里不要迷惑,已经在我们的预料之中了
修改编码
找到刚才的工程,右键选择打开方式用记事本打开,这个时候比较有趣的是我们可以看下记事本打开的工程右下角显示的编码为UTF-8

不深究这个编码他有什么问题,用记事本打开之后另存为,另存的时候右下角可以选择保存的编码,将编码选择为 ANSI 之后保存

保存好 ANSI 编码之后重新用arduino打开工程,可以看到代码中的中文变成了乱码,重新输入中文 您好! ,编译上传
打开arduino串口监视器

输出乱码
继续,关闭arduino串口助手,打开 XCOM 查看数据

输出正常
总结
中文输出乱码的主要原因是arduino采用的UTF-8输出与外部的串口监视器不兼容导致,我们只需要将对应的编码格式修改为匹配的即可
也相信同样有不少人碰到其他的问题可以在下方留言大家探讨解决,感谢大佬们的一键三连!


















