Использование lxml для анализа xml с японским - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть следующий XML-документ:

<package>
    <title>セレニティー (字幕版)</title> 
    ... 
</package>

Я использую lxml для анализа заголовка следующим образом:

node = etree.fromstring(file_contents)
title = node.xpath("//t:title/text()")
title
[u' \u30bb\u30ec\u30cb\u30c6\u30a3\u30fc (\u5b57\u5e55\u7248)']

Однако, когда я INSERT это вмоя база данных использует title.encode(utf-8), я получаю тарабарщину:

セレニティー (字幕版)

Как бы я правильно проанализировал title здесь (セ セ ニ テ ィ ー (字幕 版)), чтобы я мог сделать INSERT от значения.

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Убедитесь, что ваш экземпляр MySQL настроен на сохранение Unicode как UTF-8.

0 голосов
/ 27 февраля 2012

На самом деле это проблема для самого lxml, они предполагают, что все будут использовать ASCII / Latin-1 по умолчанию, что глупо. Даже попытка запустить анализатор в UTF-8 может вернуть вам ошибки, попробуйте вызвать синтаксический анализатор следующим образом:

parser = etree.HTMLParser (encoding = 'shift-jis')

Насколько я понимаю, Shift-JIS по-прежнему является самой распространенной кодировкой для страниц на японском языке. Мой модуль Python / lxml http://github.com/caio1982/Amazon-Wishlist работает с японскими страницами, используя приведенное выше.

...