浅见池也 发表于 2018-8-15 06:45:30

Python之Win字符编码详解

Win下的dos窗口输出中文
  Python2.7默认字符编码是ascii格式,即使指定字符编码为UTF-8也未必能够输出中文,测试如下:
#_*_coding:utf-8_*_# 定义一个变量内容为中文,字符集为UTF-8temp = "中文"  # 输出变量temp的内容print(temp)
  用win下的dos窗口执行这个脚本,看看输出出来的是否为中文
C:\Users\anshe>python F:\Python_code\sublime\Day02\print.py涓枃      #输出出来的是乱码  这是为什么呢?其实是因为dos窗口的字符编码是GBK的(如下图),规定输出的字符集必须是GBK的,所以输出出来的中文即为乱码。
https://blog.ansheng.me/static/uploads/2016/12/1483016145.png
  注意我是用的是Python2.7.11
C:\Users\anshe>python -VPython 2.7.11  使用Pycharm或者sublime的Python>输出中文流程
https://blog.ansheng.me/static/uploads/2016/12/1483016187.png
  流程中文说明:
  Py Scripts头部指定编码格式为UTF-8 —> IDE把默认的Ascii格式编码成UTF-8 —-> IDE终端输出中文

[*]
  用sublime>
# _*_ coding:utf-8 _*_# 定义一个变量内容为中文,字符集为UTF-8temp = "中文"  # 输出变量temp的内容print(temp)
  输出的内容:
https://blog.ansheng.me/static/uploads/2016/12/1483016219.png
  既然这样,python的编码能够把ascii编码还换成UTF-8那么肯定也就可以转换成GBK编码,流程如下:
https://blog.ansheng.me/static/uploads/2016/12/1483016246.png
  代码如下:
# _*_ coding:utf-8 _*_# 定义一个变量内容为中文,字符集为UTF-8temp = "中文"  # 解码,需要指定原来是什么编码temp_unicode = temp.decode("utf-8")
  # 编码,需要指定要转换成什么编码temp_gbk = temp_unicode.encode("gbk")
  # 输出转换成的gbk编码print(temp_gbk)
  Dos窗口执行测试:
C:\Users\anshe>python F:\Python_code\sublime\Day02\print.py中文  另外一种方法:
  代码:
# _*_ coding:utf-8 _*_# 定义一个变量内容为中文,字符集为UTF-8temp = "中文"  # 解码,需要指定原来是什么编码temp_unicode = temp.decode("utf-8")
  # 输出转换成的gbk编码print(temp_unicode)# Windows终端需要GBK,DOS自动转换成GBK
C:\Users\anshe>python F:\Python_code\sublime\Day02\print.py中文  大概流程也就像下面的图一样
https://blog.ansheng.me/static/uploads/2016/12/1483016284.png
  python3移除了unicode字符集的类型,默认使用UTF-8,还有一种也可以在dos终端输出中文的方法,代码如下:
# _*_ coding:utf-8 _*_print(u"中文")  DOs窗口输出的就是中文了,虽然我也不知道是什么意思
C:\Users\anshe>python f:\Python_code\sublime\Day02\print.py中文
页: [1]
查看完整版本: Python之Win字符编码详解