红联Linux门户
Linux帮助

windows/linux页面编码区别导致python乱码

发布时间:2017-03-25 10:46:37来源:linux网站作者:thought
直到今天我才注意到 shell 采用不同编码会导致这么多的问题。这半天时间算是认栽了吧。
 
首先,Windows的默认编码为GBK,Linux的默认编码为UTF-8。看图:
这个是 Linux shell 的活动代码页编码:
windows/linux页面编码区别导致python乱码
 
这个是 windows powershell 的:
windows/linux页面编码区别导致python乱码
936 既是 GBK。
 
而在 Scrapy 中抓取页面然后提取出的信息是以 unicode字符串 的形式保存下来的。在python中print即可正常显示文字。但在 powershell 中会出以下问题:
windows/linux页面编码区别导致python乱码
 
即某些字符无法被 gbk 编码,然后就报错。
 
我试过修改 chcp 为 65001(utf-8的代码),无用。
这里我强调下,unicode是字符集, utf-8 和 gbk 是编码集。至于这俩有什么不同,可以这么说:unicode 定义了所有的字符(目前看来是的),用来展示给你看的,而编码集utf-8是一种字符集的实现,用来面向计算机的,主要用来存储为字节,以及网络传输的。
 
至于字符集和编码集分开的原因,是为了物尽其用,毕竟不是所有人都能用到unicode里所有的字符(节省资源。以后硬件更nb了可能就不用了)
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29467.html