souceinsight和其他编辑器混用出现的乱码
SourceInsight和Sublime Text是大家比较主流的代码编辑器(或阅读器),有时混用时,会出现中文乱码的问题,这里就是要分析并解决它
如何知道文件的编码
使用下面这个python代码,就可以得到文件的编码方式,其中需要额外安装python的magic库,通过如下进行安装
apt install python-magic
实现代码如下:
#!/usr/bin/python
import magic
import sys
blob = open(sys.argv[1]).read()
m = magic.open(magic.MAGIC_MIME_ENCODING)
m.load()
encoding = m.buffer(blob)
print(sys.argv[1])
print(encoding)
通过如下语句可以方便使用:
find /path/to/folder -name "*.c" | xargs -i python read_file_codec.py {}
(假设上面代码放入read_file_codec.py中)
现在的代码编码情况
可以发现,大部分的自己项目的代码文件,都是iso-8859-1。
源代码的文件,基本都是ascii编码
sublime text默认文件为ascii,如果加入了中文,自动转存为utf8
异常情况
sourceinsight和sublime text混用后,有时会出现异常,将本来iso-8859-1存为了utf8.
狗血的是,source insight居然不能完美支持utf8(中文乱码)(网上插件有bug,不推荐)
因此,还是需要将utf8的文件转为iso-8859-1
转码
找到utf8文件后,采用linux的iconv指令可以简单搞定
iconv -f utf-8 -t iso-8859-1 file_with_utf8.c -o file_after_transfer.c