在Python中非拉丁文本作为无意义输出

2024-09-20 06:40:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它发出一个JSON请求,可以在任何脚本中返回文本,然后输出文本(我对返回的文本没有任何控制权)。在

它可以很好地处理拉丁字符,但其他脚本输出为mojibake,我不确定出了什么问题。在

在响应中,有问题的字符使用\u语法进行编码。特别是,我有一个包含\u00d0\u00b8\u00d1\u0081\u00d0\u00bf\u00d1\u008b\u00d1\u0082\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5的字符串,它应该输出为испытание,但是输出为иÑпÑÑание。在

显然,这与python如何处理unicode和UTF有关,但是尽管我读了很多书,但我还是不太了解发生了什么,不知道如何解决它。在

我试图从下面的代码中提取要点:

response = requests.get(url, params=params, cookies=self.cookies, auth=self.auth)
text = response.text
print text
status = json.loads(text)
print status
for folder in status['folders']
  print folder['name']

输出:

^{2}$

我也试过了

status = response.json();
for folder in status['folders']:
    print folder['name']

同样的结果。在

注意,我实际上是将字符串传递给要显示的GTKMenuItem,但是字符串的print的输出与在菜单中显示它的输出相同。在


Tags: 字符串text文本self脚本responsestatusparams
1条回答
网友
1楼 · 发布于 2024-09-20 06:40:54

正如@Ricardo Cárdenes在the comment中所说,服务器发送了错误的响应。你得到的响应是双重编码的:

>>>> u = u'\xd0\xb8\xd1\x81\xd0\xbf\xd1\x8b\xd1\x82\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5'
>>>> print u.encode('latin-1').decode('utf-8')
испытание

正确的字符串如下所示:

^{pr2}$

相关问题 更多 >