我有从其他网站获取html的scrap / curl请求,这些网站有中文,但是一些文本结果很奇怪,它显示如下:
ÕÀÔÆËËËàಲ²² pÖÁ´Ê×ÊÁ±í´øÐÅÏ¢£¬Çë·Ãð¢Àï°Í°ÍÅú·¢Íø££
应该是中文,这是我的代码:
str(result.decode('ISO-8859-1'))
如果未解码“ ISO-8859-1”(仅返回结果变量),它将显示如下问号:
����Ͱ�Ϊ������������������������������� ���������������������������������� ˽����ֱֱƷƷгӱгг Ϣ>
您能帮我应该使用哪种编码/解码吗?
谢谢
答案 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')
输出:
台南亲子餐厅