您的位置:首页 > 编程语言 > Python开发

python读写unicode文件之utf-16

2013-06-03 21:27 716 查看
很多文章都提到了 import codecs,的确!

但是有的在处理unicode时只考虑utf-8,或者简单utf-16.

但是utf-16使用时还容易报错,原因就是utf-16会默认检测BOM(byte order mark),如果有的文件创建时没有,则python无法正常读取,这是就要考虑utf_16_le等。

------------------------------------

utf_16、utf_16_le、utf_16_be、utf_8

引用下:http://blog.csdn.net/skeleton703/article/details/8433375 以及
http://blog.csdn.net/pkrobbie/article/details/1451437

Python核心库的open函数是按照ascii设计的。但是,现在我们越来越多地要面对Unicode文件。好在python提供了codecs模块,帮我们解决了这个问题。使用中有一些需要注意的问题。

codecs模块的open定义如下

open(filename, mode[, encoding[, errors[, buffering]]])Open an encoded file using the given mode and return a wrapped version providing transparent encoding/decoding.

其中前两个参数filename和mode和默认的open相同。第三个参数encoding是关键,制定了文件的编码方式。

对于常用的Unicode有这几种utf_16、utf_16_le、utf_16_be、utf_8,每一种还有一些可用的别名,具体可以查找python manual。

utf_16、utf_16_le、utf_16_be参数的区别是这样的。

如果指定了utf_16,python会检查文件的BOM(Byte Order Mark)来判断,文件类型到底是utf_16_le、utf_16_be。对于没有BOM的文件会报错。

如果我们直接指定了utf_16_le、utf_16_be,python就不检查BOM了。对于没有BOM的文件很好用。但是,对于有BOM的文件就要注意,它会把BOM当作第一个字符读入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: