我的网站编码有问题。我制作了一个程序来抓取一个网站,但我没有成功改变readed内容的编码。我的代码是:
import sys,os,glob,re,datetime,optparse
import urllib2
from BSXPath import BSXPathEvaluator,XPathResult
#import BeautifulSoup
#from utility import *
sTargetEncoding = "utf-8"
page_to_process = "http://www.xxxx.com"
req = urllib2.urlopen(page_to_process)
content = req.read()
encoding=req.headers['content-type'].split('charset=')[-1]
print encoding
ucontent = unicode(content, encoding).encode(sTargetEncoding)
#ucontent = content.decode(encoding).encode(sTargetEncoding)
#ucontent = content
document = BSXPathEvaluator(ucontent)
print "ORIGINAL ENCODING: " + document.originalEncoding
我使用外部库(BSXPath是BeautifulSoap的扩展),document.originalEncoding打印网站的编码,而不是我试图改变的utf-8编码。 有人有什么建议吗?
由于
答案 0 :(得分:0)
嗯,无法保证HTTP标头提供的编码与HTML本身内部指定的编码相同。这可能是由于服务器端的配置错误或HTML内部的charset定义可能是错误的。实际上没有自动方法来检测编码或检测正确的编码。我建议手动检查HTML以获得正确的编码(例如,可以轻松检测到iso-8859-1与utf-8),然后在应用程序内以某种方式手动对编码进行硬编码。