我有以下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
这个值。
答案 0 :(得分:1)
确保您的MySQL实例设置为将Unicode也存储为UTF-8。
答案 1 :(得分:0)
实际上这对我来说是lxml本身的问题,他们假设默认情况下每个人都会使用ASCII / Latin-1,这是愚蠢的。即使尝试以UTF-8运行解析器也可能会向您返回错误,请尝试像这样调用解析器:
parser = etree.HTMLParser(encoding ='shift-jis')
据我所知,Shift-JIS仍然是日语中最常见的字符集。我的Python / lxml模块http://github.com/caio1982/Amazon-Wishlist使用上面的日语页面。