Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中解码编码的unicode字符串_Python_String_Unicode_Decode - Fatal编程技术网

在Python中解码编码的unicode字符串

在Python中解码编码的unicode字符串,python,string,unicode,decode,Python,String,Unicode,Decode,我需要解码“UNICODE”编码字符串: >>> id = u'abcdß' >>> encoded_id = id.encode('utf-8') >>> encoded_id 'abcd\xc3\x9f' 我的问题是: 使用挂架路由,我将编码的\u id变量作为unicode字符串u'abcd\xc3\x9f'而不是普通字符串'abcd\xc3\x9f': 使用python,如何解码编码的_id变量(unicode字符串) >&g

我需要解码“UNICODE”编码字符串:

>>> id = u'abcdß'
>>> encoded_id = id.encode('utf-8')
>>> encoded_id
'abcd\xc3\x9f'
我的问题是: 使用挂架路由,我将编码的\u id变量作为unicode字符串
u'abcd\xc3\x9f'
而不是普通字符串
'abcd\xc3\x9f'

使用python,如何解码编码的_id变量(unicode字符串)

>>> encoded_id = u'abcd\xc3\x9f'
>>> encoded_id.decode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/test/vng/lib64/python2.6/encodings/utf_8.py", line 16, in         decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-5: ordinal not in range(128)
编码的\u id=u'abcd\xc3\x9f' >>>编码的\u id.解码('utf-8') 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/home/test/vng/lib64/python2.6/encodings/utf_8.py”,第16行,解码 返回编解码器.utf_8_解码(输入,错误,真) UnicodeEncodeError:“ascii”编解码器无法对位置4-5中的字符进行编码:序号不在范围内(128)
您有UTF-8编码的数据(没有UNICODE编码的数据)

将unicode值编码为Latin-1,然后从UTF8解码:

encoded_id.encode('latin1').decode('utf8')
拉丁语1将前255个unicode点一对一映射为字节

演示:


如果可能的话,你应该弄清楚为什么你从塔架上得到的字符串被不正确地解码为
latin-1
(或者是它的近亲,
windows-1252
),而不是
utf-8
>>> encoded_id = u'abcd\xc3\x9f'
>>> encoded_id.encode('latin1').decode('utf8')
u'abcd\xdf'
>>> print encoded_id.encode('latin1').decode('utf8')
abcdß