一、问题:
C++基于Linux的远程开发,在windows用VS2019开发代码,拷贝到linux服务器,中文是乱码。
1.vs2019的代码,用notepad++看编码格式是GB2312
2.代码在linux用vim看编码格式是latin1(自动编码判断机制不准导致的)
解释参考:https://www.cnblogs.com/Mrq-t/p/12795725.html
二、解决方案:
2.1.单个文件
2.1.1 如果文件在windows,用txt打开,然后另存为的时候,选择UTF-8格式。或者使用VS2019的“高级保存选项”的方法,参考情况三:https://blog.csdn.net/qq_42956179/article/details/106075025?spm=1001.2014.3001.5502。
2.1.2 如果文件在linux,用vim打开,设置一下编码格式。
2.1.2.1 在Vim中可以直接查看文件编码
:set fileencoding
2.1.2.2 在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8
参考:https://blog.csdn.net/jnbbwyth/article/details/6991425
2.1.3 如果文件在linux,使用icnov命令,需要安装(未验证)。
参考:https://blog.csdn.net/konglongaa/article/details/80590843
2.2 多个文件,批量转换.
2.2.1 第一步,使用vs2019下载插件Format on Save
该博客适用于刚开发的时候,参考:https://www.cnblogs.com/zzzsj/p/16797836.html
2.2.2 第二步,在项目 属性 -> C/C++ -> 命令行中配置UTF-8
2.2.3 第三步,右击项目名称,会有Format in projec选项,选中就会批量转换了。
该博客适用于已经开发完,很多文件都是GB2312的编码,需要批量转换,参考情况二:https://blog.csdn.net/qq_42956179/article/details/106075025?spm=1001.2014.3001.5502。配置完应用之后,VS2019会自动转码。
注意事项:
1.由于修改了编码,可能会导致存储中文的数组越界,调大点就可以了。
2.除了C++的.cpp文件和.h文件可以用这种方法,其他的配置文件和MakeFile文件需要避免转换编码格式(有可能会导致makefile无法编译)。