Python 2.6 и Unicode - PullRequest
       8

Python 2.6 и Unicode

0 голосов
/ 07 декабря 2011

Итак, я работаю для приложения типа веб-браузера для моего клиента, и я только что реализовал функцию закладок, но она не работает должным образом.Когда пользователь нажимает «Закладка страницы», появляется небольшая форма, которая берет заголовок веб-страницы и помещает его в строку редактирования.Дело в том, что если в заголовке сайта есть какие-то посторонние или необычные символы, то Python выдает ошибку, так как он не может закодировать строку.Как я могу заставить python обрабатывать все возможные строки, независимо от того, содержит ли он иероглифы или какие-то другие странные символы?

Библиотека, используемая для графического интерфейса пользователя и встроенного браузера: PyQT

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Если вы используете QWebView.title, чтобы получить заголовок текущей веб-страницы, то она вернет либо QString, либо строку в кодировке Python Unicode.То, что вы получите, зависит от используемой версии PyQt API.Для версии 1 (которая используется по умолчанию для Python2) это будет QString;для версии 2 (которая используется по умолчанию для Python3) это будет строка в кодировке Юникод Python.Что бы это ни было, чтобы правильно отобразить его при редактировании строки, просто установите его прямо:

lineEdit.setText(webview.title())

Поскольку вы, похоже, используете Python2, я буду считать, что webview.title() возвращает QString.Если вы хотите преобразовать это в строку Unicode Python (например, чтобы использовать его с sqlite), то вы можете сделать следующее:

title = unicode(webview.title())

Обратите внимание, что вы должны не passкодировка (например, «utf-8») в качестве второго аргумента unicode, поскольку она используется для декодирования строк байтов в строки Unicode.

Если вам делать нужно получить строку байтов в кодировке "utf-8" из QString, то вы можете сделать:

data = unicode(webview.title()).encode('utf-8')

или:

data = webview.title().toUtf8().data()
0 голосов
/ 07 декабря 2011

Что вы используете для анализа сайтов? Я бы порекомендовал Красивый суп . Он попытается определить кодировку веб-страницы и вернет вам юникод. HTML-раздел "Красивый суп" . Изменить: Также взгляните на раздел «Красивый суп дает вам Unicode, черт возьми»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...