Как преобразовать HTML-сущности в символы? - PullRequest
0 голосов
/ 08 апреля 2009

Я сделал некоторые адаптации к сценарию из этого ответа . и у меня проблемы с юникодом. Некоторые вопросы заканчиваются плохо.

Некоторые ответы и ответы в конечном итоге выглядят так:

Yeah.. I know.. I’m a simpleton.. So what’s a Singleton? (2)

Как я могу сделать перевод ’ на правильный символ?

Примечание: если это имеет значение, я использую python 2.6 на французских окнах.

>>> sys.getdefaultencoding()
'ascii'
>>> sys.getfilesystemencoding()
'mbcs'

EDIT1: Основываясь на сообщении Райана Гинстрома, я смог исправить часть вывода, но у меня возникли проблемы с юникодом python.

В режиме ожидания / Python:

Да .. Я знаю .. Я простак .. Так Что такое синглтон?

В текстовом файле при перенаправлении stdout

Да .. Я знаю .. Я простак .. Так что такое синглтон?

Как я могу это исправить?


Edit2: Я попробовал решение Джаррета Харди, но оно ничего не сделало. Я нахожусь на Windows, использую Python 2.6, поэтому моя папка с пакетами сайта находится по адресу:

C: \ Python26 \ Lib \ сайт-пакеты

Не было файла siteconfig.py, поэтому я создал его, вставил код, предоставленный Джарретом Харди, запустил интерпретатор python, но, похоже, он не был загружен.

sys.getdefaultencoding () 'ASCII'

Я заметил, что файл site.py находится по адресу:

C: \ Python26 \ Lib \ site.py

Я попытался изменить кодировку в функции

def setencoding():
    """Set the string encoding used by the Unicode implementation.  The
    default is 'ascii', but if you're willing to experiment, you can
    change this."""
    encoding = "ascii" # Default value set by _PyUnicode_Init()
    if 0:
        # Enable to support locale aware default string encodings.
        import locale
        loc = locale.getdefaultlocale()
        if loc[1]:
            encoding = loc[1]
    if 0:
        # Enable to switch off string to Unicode coercion and implicit
        # Unicode to string conversion.
        encoding = "undefined"
    if encoding != "ascii":
        # On Non-Unicode builds this will raise an AttributeError...
        sys.setdefaultencoding(encoding) # Needs Python Unicode build !

для установки кодировки в utf-8. Это сработало (после перезагрузки python, конечно).

>>> sys.getdefaultencoding()
'utf-8'

Печально то, что это не исправило символы в моей программе. (

Ответы [ 2 ]

1 голос
/ 08 апреля 2009

Вы должны быть в состоянии преобразовать объекты HTMl / XML в символы Unicode. Проверьте этот ответ в SO:

Декодирование HTML-объектов с помощью Python

В основном вы хотите что-то вроде этого:

from BeautifulSoup import BeautifulStoneSoup

soup = BeautifulStoneSoup(urllib2.urlopen(URL),
                          convertEntities=BeautifulStoneSoup.ALL_ENTITIES)
0 голосов
/ 09 апреля 2009

Работает ли изменение кодировки по умолчанию в siteconfig.py?

В вашем файле site-packages (в моей системе OS X он находится в /Library/Python/2.5/site-packages/) создайте файл с именем siteconfig.py. В этот файл положено:

import sys
sys.setdefaultencoding('utf-8')

Метод setdefaultencoding удаляется из модуля sys после обработки siteconfig.py, поэтому вы должны поместить его в site-packages, чтобы Python прочитал его при запуске интерпретатора.

...