博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用python3.0 和vim配合检查文件中文的编码
阅读量:2225 次
发布时间:2019-05-09

本文共 921 字,大约阅读时间需要 3 分钟。

 用python3.0 和vim配合检查文件中文的编码

/文 2009.2.3

打开一个中文文件,不清楚其中文编码到底是什么格式。python源程序文件头可能指定是utf8,而实际编码却是gbk。不一致的编码在python源码中,可能在执行时得到错误的结果。一种解决办法是查看二进制,但汉字的二进制到底对应什么编码呢?

 

python3.0内部缺省编码为utf-8。

vim的vimrc里面增加两行:

set fenc=utf-8
set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom

这样,文件保存缺省的为utf-8编码。

 

在.vimrc中设置fenc以处理中文文件名。设置fileencoding=utf-8,gbk,...等让vim 7.0以上自动判别文件内码。如果不设置的话,在linux下打开gb2312内码的文件会显示乱码。设置后系统会自动判断内码。

 

set enc=cp936 这是gvim界面显示的编码,windows下用cp936,linux下用utf8,最好不要设,系统自己判断。

对新打开的已经存在的文件,如果不确定一个文件是否是utf8还是gbk,用vim打开文件,看到中文,再在命令模式下执行

:%!xxd
看到相应的二进制。假如文本中有“你好”,会在左边对应位置看到你好的十六进制表示。
打开python3.0,在命令行下将文本中的特定字“你好”进行二进制转码。

可以看到,对中文“你好”的二进制,utf8是
0xe4ba0 0xe5a5bd
而对gbk,gb2312,cp936,gb18030,则二进制是:
0xc4e3 0xbac3
与vim中二进制一比较,就看出文本中是什么编码了。
知道编码后,再用
:%!xxd -r
命令将十六进制转为普通的文本,保存。
对已经存在的文本,linux下可以用iconv将其转码。

转载地址:http://oblfb.baihongyu.com/

你可能感兴趣的文章
【LeetCode】无重复字符的最长子串
查看>>
时间复杂度
查看>>
【C++】动态内存管理 new和delete的理解
查看>>
【Linux】了解根目录下每个文件的作用
查看>>
【Linux】进程的理解(一)
查看>>
【Linux】进程的理解(二)
查看>>
【C语言】深度理解函数的调用(栈帧)
查看>>
【Linux】进程的理解(三)
查看>>
【C++】带头节点的双向线链表的实现
查看>>
【C++】STL -- Vector容器的用法
查看>>
【Linux】Linux中的0644 和 0755的权限
查看>>
【数据结构】有关二叉树的面试题
查看>>
【Linux】内核态和用户态
查看>>
【Linux】HTTP的理解
查看>>
【Linux】HTTPS的理解
查看>>
【操作系统】大小端问题
查看>>
Git上传代码时碰到的问题及解决方法
查看>>
【Linux】vim的简单配置
查看>>
【C++】智能指针
查看>>
【C++】const修饰的成员函数
查看>>