为了账号安全,请及时绑定邮箱和手机立即绑定

Python普通字符串和Unicode字符串的区别?

还是有些疑惑Python普通字符串和Unicode字符串的区别?print如果不加u的话,默认是ASCII?如果是的话,应该打印不出中文啊?可是不加u也可以打出文本啊?我想法哪里出问题了?

正在回答

2 回答

在python2中

1. 当你定义一个中文 

a="中文"  


你会发现a的类型其实是一个str(   可以通过 type(a)查看,<type 'str'> ) 

因为可以得出结论, a是一个str类型,而str是已经经过编码的,编码后的值是'\xe4\xb8\xad\xe6\x96\x87' (len(a)的长度为6)

2. 当你加上u

a=u''中文"

你会发现a的类型是一个unicode()(可以通过type(a)查看,<type 'unicode'>)

因此可以得出结论,a是一个unicode类型,而unicode存储的是编码前的字符,编码前的值是

"u'\u4e2d\u6587'",(len(a)的长度为2)

3. str类型转换为unicode

a.decode('utf-8')

希望对你有帮助

0 回复 有任何疑惑可以回复我~
#1

thefishbook 提问者

谢谢了,还有个问题,编码后的值是'\xe4\xb8\xad\xe6\x96\x87' ,这是ascii码?比如\xe4有什么具体含义吗?
2017-05-09 回复 有任何疑惑可以回复我~
#2

thefishbook 提问者 回复 thefishbook 提问者

在python2中,如果不加u的话,在行首加上# -*-coding:UTF-8-*-,也是可以正常打印出中文。python3则不同,无论加不加行首字符声明&加不加u,都可以正常打印出中文。
2017-05-09 回复 有任何疑惑可以回复我~
#3

藏红 回复 thefishbook 提问者

这个跟你选择具体编码有关系, 比如你选择了 utf-8 和 gbk,那么编码后的值就是不同的
2017-05-09 回复 有任何疑惑可以回复我~
#4

thefishbook 提问者 回复 藏红

我在cmd里直接敲python进的,然后不加coding声明,直接打印出中文。。没用别的编辑器、IDE等。
2017-05-09 回复 有任何疑惑可以回复我~
#5

藏红 回复 thefishbook 提问者

cmd也是有默认编码的,查下你的操作系统,一般是gbk
2017-05-09 回复 有任何疑惑可以回复我~
#6

thefishbook 提问者 回复 藏红

如果不显示指定编码,python默认编码是什么?python2似乎是ascii?python3没看出来。。
2017-05-09 回复 有任何疑惑可以回复我~
#7

thefishbook 提问者

thx
2017-05-09 回复 有任何疑惑可以回复我~
查看5条回复

我觉得是由于代码都是UTF-8编码的原因

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

Python普通字符串和Unicode字符串的区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信