Python: el análisis de html de BeautifulSoup maneja la codificación de gbk deficientemente

He estado jugando con el siguiente script:

#    -*- coding: utf8 -*-
import codecs
from BeautifulSoup import BeautifulSoup, NavigableString,
UnicodeDammit
import urllib2,sys
import time
try:
    import timeoutsocket # http://www.timo-tasi.org/python/timeoutsocket.py
    timeoutsocket.setDefaultSocketTimeout(10)
except ImportError:
    pass

h=u'\u3000\u3000\u4fe1\u606f\u901a\u4fe1\u6280\u672f'

address=urllib2.urlopen('http://stock.eastmoney.com/news/1408,20101022101395594.html').read()
soup=BeautifulSoup(address)

p=soup.findAll('p')
t=p[2].string[:10]

con el siguiente resultado:

imprimir t

¡¡¡¡ÐÅÏ ¢ ͨ

imprimir h

信息 通

t

u '\ xa1 \ xa1 \ xa1 \ xa1 \ xd0 \ xc5 \ xcf \ xa2 \ xcd \ xa8'

h

u '\ u3000 \ u3000 \ u4fe1 \ u606f \ u901a'

h.encode ('gbk')

'\ xa1 \ xa1 \ xa1 \ xa1 \ xd0 \ xc5 \ xcf \ xa2 \ xcd \ xa8'

En pocas palabras: cuando paso este html a través de BeautifulSoup, toma el texto codificado en gbk y piensa que es unicode, sin reconocer que primero debe decodificarse. Sin embargo, "h" y "t" deberían ser iguales, ya que h solo soy yo tomando el texto del archivo html y convirtiéndolo manualmente.

¿Cómo resuelvo este problema?

mejor

Wheaton

Respuestas a la pregunta(1)

Su respuesta a la pregunta