最近在windows环境中用python2.7抓网页信息,保存到excel中,遇到了一些中文字符问题。研究了好久,才有一些心得。
先说一下gbk和utf8的区别,因为我遇到的问题都是它们2个造成的:
1.utf8和gbk区别
- UTF-8:Unicode TransformationFormat-8bit,。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
- GBK是中国国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大。
从上面解释可以明白,GBK和GB2312基本是一回事情。
2.GBK/GB2312与UTF8之间转换
gbk/gb2312和uft8之间都必须通过Unicode编码才能相互转换:
- GBK/GB2312 --> Unicode --> UTF8
- UTF8 --> Unicode --> GBK/GB2312