обнаружить и изменить кодировку сайта в python - PullRequest
0 голосов
/ 31 марта 2011

У меня проблема с кодировкой сайта. Я создал программу для очистки веб-сайта, но мне не удалось изменить кодировку прочитанного содержимого. Мой код:

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, которую я пытался изменить. У кого-нибудь есть предложения?

Спасибо

1 Ответ

0 голосов
/ 31 марта 2011

Ну, нет никакой гарантии, что кодировка, представляемая заголовками HTTP, такая же, какая кодировка указана внутри самого HTML. Это может произойти либо из-за неправильной конфигурации на стороне сервера, либо из-за неправильного определения кодировки в HTML. На самом деле не существует автоматического способа обнаружить кодировку или определить кодировку right . Я предлагаю проверить HTML вручную на предмет правильной кодировки (например, iso-8859-1 вместо utf-8, легко обнаружить), а затем каким-то образом вручную закодировать кодировку внутри вашего приложения.

...