str*_*fry 17 python string unicode character-encoding
我正在处理python-lastfm库返回的unicode字符串.
我假设在某个地方,库得到编码错误并返回一个可能包含无效字符的unicode字符串.
例如,我期望变量a中的原始字符串是"Glück"
>>> a u'Gl\xfcck' >>> print a Traceback (most recent call last): File "", line 1, in UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 2: ordinal not in range(128)
\ xfc是转义值252,它对应于"ü"的latin1编码.不知怎的,它以一种python无法独立处理的方式嵌入到unicode字符串中.
如何将此转换为包含原始"Glück"的普通或unicode字符串?我尝试使用解码/编码方法,但要么得到了一个UnicodeEncodeError,要么是一个包含序列\ xfc的字符串.
小智 12
您必须使用某些编码将您的unicode字符串转换为标准字符串,例如utf-8:
some_unicode_string.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
除此之外:这是一个骗局
BeautifulSoup findall with class attribute- unicode encode error
关于SO的至少十个其他相关问题.研究第一.
你的unicode字符串很好:
>>> unicodedata.name(u"\xfc")
'LATIN SMALL LETTER U WITH DIAERESIS'
Run Code Online (Sandbox Code Playgroud)
您在交互式提示符下看到的问题是解释器不知道使用什么编码将字符串输出到终端,因此它回退到"ascii"编解码器 - 但该编解码器只知道如何处理ASCII字符.它在我的机器上工作正常(因为sys.stdout.encoding对我来说是"UTF-8" - 可能是因为我的环境变量设置与你的不同)
>>> print u'Gl\xfcck'
Glück
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38094 次 |
最近记录: |