码迷,mamicode.com
首页 > 编程语言 > 详细

9Python全栈之路系列之Win字符编码深解

时间:2017-04-01 14:17:42      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:中文   users   python   

Win下的dos窗口输出中文

Python2.7默认字符编码是ascii格式,即使指定字符编码为UTF-8也未必能够输出中文,测试如下:


#_*_coding:utf-8_*_
# 定义一个变量内容为中文,字符集为UTF-8
temp = "中文"
# 输出变量temp的内容
print(temp)

用win下的dos窗口执行这个脚本,看看输出出来的是否为中文

C:\Users\anshe>python F:\Python_code\sublime\Day02\print.py
涓枃        #输出出来的是乱码

这是为什么呢?其实是因为dos窗口的字符编码是GBK的(如下图),规定输出的字符集必须是GBK的,所以输出出来的中文即为乱码。
技术分享
注意我是用的是Python2.7.11

C:\Users\anshe>python -V
Python 2.7.11

使用Pycharm或者sublimePython IDE输出中文流程
技术分享

流程中文说明:
Py Scripts头部指定编码格式为UTF-8 —> IDE把默认的Ascii格式编码成UTF-8 —-> IDE终端输出中文

  • 用sublime IDE输出

# _*_ coding:utf-8 _*_
# 定义一个变量内容为中文,字符集为UTF-8
temp = "中文"
# 输出变量temp的内容
print(temp)

输出的内容:
技术分享
既然这样,python的编码能够把ascii编码还换成UTF-8那么肯定也就可以转换成GBK编码,流程如下:
技术分享
代码如下:

# _*_ coding:utf-8 _*_
# 定义一个变量内容为中文,字符集为UTF-8
temp = "中文"
# 解码,需要指定原来是什么编码
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-8
temp = "中文"
# 解码,需要指定原来是什么编码
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
中文

大概流程也就像下面的图一样
技术分享
python3移除了unicode字符集的类型,默认使用UTF-8,还有一种也可以在dos终端输出中文的方法,代码如下:

# _*_ coding:utf-8 _*_
print(u"中文")

DOs窗口输出的就是中文了,虽然我也不知道是什么意思

C:\Users\anshe>python f:\Python_code\sublime\Day02\print.py
中文

#Python全栈之路

作者:安生


本文出自 “Eden” 博客,谢绝转载!

9Python全栈之路系列之Win字符编码深解

标签:中文   users   python   

原文地址:http://edeny.blog.51cto.com/10733491/1912292

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!