文件操作with open() as 时报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 22: illegal multibyte sequence
FILE_OBJECT= open('order.log','r', encoding='UTF-8')
FILE_OBJECT= open('order.log','rb')
GBK: 专门用来解决中文编码,双字节。是在国家标准GB2312基础上扩容后兼容GB2312标准。包含全部中文字符。
UTF-8: 解决国际上制度的一种多字节编码,对英文使用8位(1个字节),中文使用24位(3个字节)来编码。
对于英文字符较多的论坛适用于UTF-8节省空间。包含全世界所有国家需要用到的字符。
GBK和UTF-8文字编码的特点:
GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。
至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
GBK和UTF-8文字编码的区别:
GBK包含全部中文字符;
UTF-8则包含全世界所有国家需要用到的字符。
GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准;(好像还不是国家标准)
UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。
所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。
注意:
UTF-8版本虽然具有良好的国际兼容性,但中文需要比GBK/BIG5版本多占用50%的数据库存储空间,因此并非推荐使用,仅供对国际兼容性有特殊要求的用户使用。