程序员

说清楚python的字符编码问题

2018-03-20  本文已影响0人  攻城大师master

编码格式

目前我们在用python开发项目中经常使用的编码格式是gbk和utf-8.但是python内部为了效率都是用的unicode的双字节编码格式.
为什么会有这个几个的编码格式?

为什么在要文件头加上类似#encode这样的一行

用#encode的原因是告诉编译器我们这个文件是需要用什么解码器器来编解码.

为什么有的文件用u''这样来表示字符串

python中在字符串前面加上u即(u'')跟文件的物理编码没有关系.只是加载到内存中自动用unicode编码来表示.原理是python先将源文件中的源码用#encode=utf8 这个声明中的编码去解析,解释逻辑根据上面中的情况,如果解析成功了,会自动转乘unicode编码保存在内存中.

以r开头的字符,常用于正则表达式,对应着re模块。

为什么我的文件格式和文件头是对应的还是会出现乱码?

最终字符能不能正常显示还要看控制台用的是什么编码格式.正常应该用编码格式和解码格式还有控制台的显示的编码格式统一

python默认的编码格式sys.getdefaultencoding()可以获取,多数情况是ascii码.

最后

有什么问题加微博讨论van1988ch

上一篇 下一篇

猜你喜欢

热点阅读