因为宿主软件的原因,必须使用 py2 。 WIN10 中文系统,在 PY2.7 的 IDLE 里做了个试验,输入:
a="汽车"
print a,len(a),type(a)
b=a.decode('gbk')
print b,len(b),type(b)
c=unicode(a)
print c,len(c),type(c)
d=u'汽车'
print d,len(d),type(d)
输出:
汽车 4 <type 'str'>
汽车 2 <type 'unicode'>
汽车 2 <type 'unicode'>
Æû³µ 4 <type 'unicode'> 不理解 d 为什么输出乱码,请教。
1
ysc3839 2020-04-21 06:33:44 +08:00
Python 3 中 print('Æû³µ'.encode('latin-1').decode('gbk')) 的结果是 "汽车",所以推测 Python 把这个文件当成 latin-1 编码进行解码了。
|
2
superrichman 2020-04-21 08:14:48 +08:00 via iPhone
py2 + 中文 windows 环境 = 中文解码灾难现场
py2 想要正常点的中文得在开头对 sys 设置 defaultencoding,输出的时候还得用 encode,decode 鼓捣一番。windows 有些环境默认还是 gbk,或者是 cp936 或者是其他乱七八糟的编码,你在 a 程序里能正常输出,换到 b 程序又是乱码。 其实 py3 和 py2 可以在同一个系统里共存的,直接用 py3 不香吗? |
3
Flourite 2020-04-21 09:18:02 +08:00
二楼正解,还碰到过 py2 解码的问题,接口一切正常,但不知道为什么接口过来的数据解码后就乱码了,py3 重写搞定
|
4
liangch 2020-04-21 10:56:18 +08:00
用 py3 吧。省力点。
|
5
SakuraSa 2020-04-21 12:16:56 +08:00
试试添加环境变量:PYTHONIOENCODING=gbk
|
6
Mark24 2020-04-21 15:28:07 +08:00
今天 Python2 正式结束维护。
进入 Python3 时代 |
7
ADMlN 2020-04-21 22:32:14 +08:00
写 python 脚本的时候,也要注意一下脚本文件本身的编码,python2 通常用 cp936 编码,并且要在文件开头加上:
``` # -*- coding: cp936 -*- ``` 但如果又要用 tkinter 库的话,tkinter 显示中文用的编码是 utf-8,这时就要用 encode,decode 把编码从 cp936 转成 utf-8 再显示。 |