如何从文档中获取西里尔字符串

0 投票
3 回答
4201 浏览
提问于 2025-04-16 12:29

如何从文档中获取西里尔字母字符串?

我有以下代码:

import urllib
from BeautifulSoup import BeautifulSoup

page = urllib.urlopen("http://habrahabr.ru/")
soup = BeautifulSoup(page.read())
for topic in soup.findAll(True, 'topic'):
    print topic
    print
raw_input()

网站上有西里尔字母的单词,但Python显示的字符不对。

如果能在这个问题上得到任何帮助,我将非常感激。

附言:

我把

soup = BeautifulSoup(page.read()) 

改成了

soup = BeautifulSoup(page.read(), fromEncoding="utf-8") 

但还是没有结果...

3 个回答

0

在Django中,我是这样解决的:

from django.utils.encoding import force_unicode
print ("%s" % force_unicode(topic, encoding='utf-8', strings_only=False, errors='strict'))

所以你可以从Django中获取这个功能。

0

谢谢你的帮助。

我用这段代码解决了问题:

print str(topic).decode('utf8')
3

这个HTML页面上的数据是用UTF-8编码的。看起来你把这些数据打印到了控制台,而你的控制台使用的是cp1251编码。这就是你看到乱码的原因。

下面是用IDLE检查第一个主题的前8个字节的结果:

>>> raw = '\xd0\x90\xd0\xbb\xd0\xb3\xd0\xbe'
>>> print raw.decode('utf8')
Алго
>>> print raw.decode('cp1251')
Алго
>>> 

撰写回答