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

У меня есть следующий 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 ответа

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


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

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

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

licensed under cc by-sa 3.0 with attribution.