8
回答
python 如何将遗传中文汉字转换成Unicode格式呢
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

比如 字符串为: "我是中国人",怎么转换成 每个汉字都是以\uxxxx格式呢

目的是通过python输入telnet发给Java服务端 处理

先谢谢了,各位爷咯

举报
super_man520
发帖于3年前 8回/3K+阅
共有8个答案 最后回答: 3年前

引用来自“Feng_Yu”的评论

print u'我是中国人' #for python2

对于python3,字符串强制unicode编码,无需加u

您好,我测试下,好像不行,我用的是python2.7

>>> print u'我是中国人'
ÎÒÊÇÖйúÈË
>>>

引用来自“Feng_Yu”的评论

print u'我是中国人' #for python2

对于python3,字符串强制unicode编码,无需加u

>>>u'我是中国人'
u'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb'

直接显示的是这样,我想要的结果是下面格式:

'\uced2\ucac7\ud6d0\ub9fa\uc8cb'


--- 共有 1 条评论 ---
Feng_Yu你的有问题吧。 In [1]: u'我是中国人' Out[1]: u'\u6211\u662f\u4e2d\u56fd\u4eba' 3年前 回复

引用来自“杨延庆”的评论

那只能你自己对字符串做处理了

恩恩,python里边英语字母、数值、特殊和汉字长度不一致,这要怎么区分呢

 比如 : a 1 _ 中 此类的

--- 共有 2 条评论 ---
杨延庆也可以考虑用string.format形式 3年前 回复
杨延庆你用字节数组存储如何? 3年前 回复
Python 2.7.5 (default, Feb 11 2014, 07:46:25) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'我是中国人'
我是中国人
>>> u'我是中国人'
u'\u6211\u662f\u4e2d\u56fd\u4eba'
>>> len(u'我是中国人')
5

>>> 
@super_man520

引用来自“大号黑蚂蚁”的评论

Python 2.7.5 (default, Feb 11 2014, 07:46:25) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'我是中国人'
我是中国人
>>> u'我是中国人'
u'\u6211\u662f\u4e2d\u56fd\u4eba'
>>> len(u'我是中国人')
5

>>> 
@super_man520

Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print u'我是中国人'
ÎÒÊÇÖйúÈË
>>> u'我是中国人'
u'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb'
>>> len(u'我是中国人')
10
>>>

~~~~我运行的结果跟你完全不一样,你的编码是GBK吗?

引用来自“大号黑蚂蚁”的评论

Python 2.7.5 (default, Feb 11 2014, 07:46:25) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'我是中国人'
我是中国人
>>> u'我是中国人'
u'\u6211\u662f\u4e2d\u56fd\u4eba'
>>> len(u'我是中国人')
5

>>> 
@super_man520

引用来自“super_man520”的评论

Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print u'我是中国人'
ÎÒÊÇÖйúÈË
>>> u'我是中国人'
u'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb'
>>> len(u'我是中国人')
10
>>>

~~~~我运行的结果跟你完全不一样,你的编码是GBK吗?

用的是utf-8,如果是GBK的话(终端字符集设置),结果是:
>>> u'..我是中国?
u'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8'

>>> lenu(u'我是中国人')
10


Python中的主要编码是ascii和utf-8
>>> x='我是中国人'
>>> print [x]
['\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba']
>>> y=x.decode('utf8')
>>> print [y]
[u'\u6211\u662f\u4e2d\u56fd\u4eba']

>>> z=y.encode('gbk')
>>> print [z]
['\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb']   #从这里可以看出你上面的结果实际不是utf编码,而是gbk编码后的结果。
>>> e=z.decode('gbk')
>>> print [e]
[u'\u6211\u662f\u4e2d\u56fd\u4eba']

个人猜测,你获取到的字符应当是ascii的,然后你直接utf-8解码即可。如果是gbk的字符,你先用gbk解码,然后看是啥字符。如果是utf-8了,就不要纠结是\uxxxx的形式,还是\xyy\xzz了,只要你的编码是正确的,最终会得到正确的结果。

顶部