C++跨平台编码文件格式问题

    跨平台编码方案:visual gdb + vs2012 + visaul assist x

   windows 上的默认文件格式和 Linux 上的还有差别的。这会引发一些莫名其妙的 bug,例如乱码等等。遇到问题,所以总结了一些小技巧:

   一、换行符问题:

    SVN 提交代码的时候,会发现代码行末尾图标有改动,这是换行符发生改变。是跨平台编写代码导致的。在 windows 平台上写 linux 平台上的代码,可以用 NotePad++ 打开文件,进行替换(ctrl+h 快捷键)

    



    二、GBK 转换 UTF-8 文件

    linux 环境文件都是默认utf8 格式,windows 平台默认 GBK(GB2312),很多同学喜欢在 windows平台右键新建文件,那么里面的汉字在 linux 平台下通常是乱码,如果代码逻辑里有汉字,那么下发终端会导致乱码,所以 GBK 要转 UTF-8,可以通过 NotePad++ 进行修改。所以团队成员在 windows 平台新建服务器文件,一般都是禁止的。这个文件默认就是 GBK 格式的;GBK 格式的源码文件



三、NotePad++ 新建文件格式设置

    避免 windows 平台下右键新建文件带来的源码编码格式不正确问题,可以用 NotePad++ 进行新建文件,设置默认的格式,如下图。



    四、UTF-8 文件差异

    代码提交前,须要比对文件的差异,这是编码的良好习惯。svn 对比是一个很好的工具,有时候通过工具,我们可能只关注到颜色比较鲜艳的差异,有些细微的差异却忽略了。例如带 bom 和不带 bom 的 utf8 文件。有的系统环境,对这些文件要求比较严格,可能引发不可预料的问题。所以提交代码后,也要注意这个地方。


    五、VS 系列换行符显示插件


五、LINUX 转换文件格式 gbk 转 utf8

linux 平台命令转换,用 dos2unix 插件,没有就 yum 安装

find . -regex '.*\.h\|.*\.hpp\|.*\.cpp'-exec dos2unix {} \;


六、linux 命令行转换,将源码文件 tab 替换为 4 个空格。

find . -regex '.*\.h\|.*\.hpp\|.*\.cpp' !-type d -exec bash -c 'expand -t 4 "$0" > /tmp/e && mv/tmp/e "$0"' {} \;

猜你喜欢

转载自blog.csdn.net/wenfh2020/article/details/54170040
今日推荐