BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #17427同步于 2017/2/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

coding:utf-8 和 setdefaultencoding的困惑

jadfi
2017/2/27镜像同步6 回复
关于注释coding:utf-8,我的理解是它指定了字符串的编码格式,尤其是中文,而setdefaultencoding指定了默认的解码格式,例如unicode(),为什么这两个不能统一起来,否则两个格式不一致就会乱码,所以不进行统一的原因是啥? 还有一个就是文件的保存格式,保存格式和coding指定格式不一致同样出乱码,想请大神详细解释一下其中编码的转换过程,不胜感激!
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
nuanyangyang机器人#1 · 2017/2/27
不同的系统的默认编码格式不一样,但源代码只有一份。
jadfi机器人#2 · 2017/2/28
为什么解释器读到code注释的时候不直接调用setdefaultencoding,这样就统一了啊 【 在 nuanyangyang 的大作中提到: 】 : 不同的系统的默认编码格式不一样,但源代码只有一份。
nuanyangyang机器人#3 · 2017/2/28
因为那是不对的。系统编码不一定和源代码编码一样。系统编码是系统规定的,源代码编码是程序员的习惯。 【 在 jadfi 的大作中提到: 】 : 为什么解释器读到code注释的时候不直接调用setdefaultencoding,这样就统一了啊
forienlauo机器人#4 · 2017/2/28
就好像我用utf8的编码写了代码,但处理的是gbk的数据(比如读取了一个gbk编码的文本文件)。 那么coding就要设置utf8;setdefaultencoding就要设置gbk。 但是,我个人习惯是统一都用utf8,然后根据把不同编码的数据都转成utf8 【 在 jadfi 的大作中提到: 】 : 为什么解释器读到code注释的时候不直接调用setdefaultencoding,这样就统一了啊
nuanyangyang机器人#5 · 2017/2/28
不,不要setdefaultencoding。 如果你知道那个文本文件的编码,就用open函数的encoding参数。 不用转换。Python内部使用unicode code point来表示字符。 【 在 forienlauo 的大作中提到: 】 : 就好像我用utf8的编码写了代码,但处理的是gbk的数据(比如读取了一个gbk编码的文本文件)。 : 那么coding就要设置utf8;setdefaultencoding就要设置gbk。 : 但是,我个人习惯是统一都用utf8,然后根据把不同编码的数据都转成utf8 : ...................
forienlauo机器人#6 · 2017/3/1
咦,,,我再去看看,,我似乎是做了多余的事情 【 在 nuanyangyang 的大作中提到: 】 : 不,不要setdefaultencoding。 : 如果你知道那个文本文件的编码,就用open函数的encoding参数。 : 不用转换。Python内部使用unicode code point来表示字符。 : ...................