开发环境:
Windows系统:Windows 10 家庭版,VS2015社区版
Linux系统:Ubuntu 22.04 LTS Server版,gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04)
今天编写跨平台的代码,在Windows下用VS2015编写,测试完成后,在Ubuntu中用gcc编译、测试。遇到的问题是,Windows中正常,而在Ubuntu 中,printf输出的中文是乱码:
ubuntu中的语言环境:
出现乱码的原因是VS2015默认的文件编码格式是ANSI,对应的简体中文就是GB2312编码,而Ubuntu中是utf8编码。解决办法是将VS中的文件编码格式改成utf8。
需要在这个菜单项里更改:
不过VS默认不显示这个菜单项,需要先把它调出来。
打开视图→工具栏→自定义,切换到“命令”标签,选择“菜单栏”→“文件”,点击“添加命令”:
选择“文件”→“高级保存选项”→“确定”:
添加了这个菜单项后,将光标点到源码中,然后修改编码格式:
改成:
这样,在Windows和Ubuntu中,编译运行,中文就都能正常显示了。
如果改成:
在VS2015中编译有错误:
这时可以在项目属性中指定编码:
这样编译就能通过了。然后在Ubuntu里编译运行,也是没问题的。
参考:
VS对文件编码格式的转换方法, https://blog.csdn.net/qq_25662827/article/details/123901647
UTF-8有签名和无签名的区别,UTF-8有签名和无签名的区别 - 走看看
VS编译UTF8源码的处理,https://www.jianshu.com/p/a230e967f91b