python把一个unicode字符串写入文件为什么会报错

如题所述

看这个效果估计是py2,特此作答。

write方法的参数类型是str,str是二进制流(不包含编码信息),当你给出一个
unicode对象时,会执行str函数转换成str类型再送给write方法。unicode转str包含一次编码,如不指定则默认使用ascii编
码,而ascii编码集里汉字字符是没有对应的,所以报错。

然后代码首行的编码标记是用来告诉解释器这个程序的源代码是用什么编码存的。

æ­£
确姿势是在代码里指定编码。比如在open里指定,或者在write的时候手动把unicode对象通过encode方法指定编码产生str。就是说写成
fp.write(s.encode('utf8'))。注意unicode对象用encode是有意义的,str对象在py2里允许你对str对象使用
encode,然而这是对指定了default encoding的情况下才有效的,因此不推荐新手对str直接encode。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-07-29
看这个效果估计是py2,特此作答。

write方法的参数类型是str,str是二进制流(不包含编码信息),当你给出一个
unicode对象时,会执行str函数转换成str类型再送给write方法。unicode转str包含一次编码,如不指定则默认使用ascii编
码,而ascii编码集里汉字字符是没有对应的,所以报错。

然后代码首行的编码标记是用来告诉解释器这个程序的源代码是用什么编码存的。


确姿势是在代码里指定编码。比如在open里指定,或者在write的时候手动把unicode对象通过encode方法指定编码产生str。就是说写成
fp.write(s.encode('utf8'))。注意unicode对象用encode是有意义的,str对象在py2里允许你对str对象使用
encode,然而这是对指定了default encoding的情况下才有效的,因此不推荐新手对str直接encode。本回答被网友采纳
第2个回答  2019-10-14
unicode转str包含一次编码,如不指定则默认使用ascii编
码,而ascii编码集里汉字字符是没有对应的,所以报错。
然后代码首行的编码标记是用来告诉解释器这个程序的源代码是用什么编码存的。
相似回答