Uly*_*rez 2 python unicode python-3.x
我已经看到这个问题,我怀疑如何在运行时将var转换为unicode?是不是正确使用unicode功能?还有其他方法可以在运行时转换字符串吗?
print(u'Cami\u00f3n') # prints with right special char
name=unicode('Cami\u00f3n')
print(name) # prints bad ===> Cami\u00f3n
name.encode('latin1')
print(name.decode('latin1')) # prints bad ===> Cami\u00f3n
encoded_id = u'abcd\xc3\x9f'
encoded_id.encode('latin1').decode('utf8')
print encoded_id.encode('latin1').decode('utf8') # prints right
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow上看到了很多python unicode问题,但我无法理解这种行为.
正是因为如果你没有为unicode函数指定任何编码,那么:
unicode()将模仿str()的行为,除了它返回Unicode字符串而不是8位字符串.更确切地说,如果object是Unicode字符串或子类,它将返回该Unicode字符串,而不应用任何其他解码.
所以你将拥有str你的unicode版本(Unicode部分将被转义):
>>> name=unicode('Cami\u00f3n')
>>> print(name)
Cami\u00f3n
>>> name
u'Cami\\u00f3n'
^
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,你可以使用'unicode-escape'你的编码来逃避将Unicode转换为字符串!
>>> name=unicode('Cami\u00f3n','unicode-escape')
>>> name
u'Cami\xf3n'
>>> print(name)
Camión
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |