python将中文编码为特殊字符

时间:2018-12-28 06:36:00

标签: python decode encode

我有从其他网站获取html的scrap / curl请求,这些网站有中文,但是一些文本结果很奇怪,它显示如下:

  

ÕÀÔÆËËËàಲ²² pÖÁ´Ê×ÊÁ±í´øÐÅÏ¢£¬Çë·Ãð¢Àï°Í°ÍÅú·¢Íø££

应该是中文,这是我的代码:

str(result.decode('ISO-8859-1'))

如果未解码“ ISO-8859-1”(仅返回结果变量),它将显示如下问号:

  

����Ͱ�Ϊ������������������������������� ���������������������������������� ˽����ֱֱƷƷгӱгг

您能帮我应该使用哪种编码/解码吗?

谢谢

3 个答案:

答案 0 :(得分:1)

汉语有几种可能的字符集。
3种常见的中文字符集是:gb2312,big5和gbk。
这是一个可从gb2312转换为utf-8的代码段。

import codecs

infile = codecs.open("in.txt", "r", "gb2312")
lines = infile.readline()
infile.close()

print(lines)

outfile = codecs.open("out.txt", "wb", "utf-8")
outfile.writelines(lines)
outfile.close()

答案 1 :(得分:1)

这是一个非常简单的解决方案,正如@Thu Yein tun提到的那样,可以看到针对内容类型的http请求链接的标头响应,我将其显示为text / html; charset = GBK, 然后我将解决方案提供给我的代码

result.decode('gbk')

答案 2 :(得分:0)

尝试这段代码。

您可以导入unquote文件并使用latin1编码机制对内容进行编码。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from urllib2 import unquote

bytesquoted = u'å%8f°å%8d%97 親å­%90é¤%90廳'.encode('latin1')
unquoted = unquote(bytesquoted)
print unquoted.decode('utf8')

输出:

台南亲子餐厅