使用lxml解析带有日语的xml

发布于 2025-01-06 17:39:14 字数 570 浏览 0 评论 0原文

我有以下 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)']

但是,当我使用 title.encode(utf INSERT 到我的数据库中时-8),我得到了一些乱码:

セ㡡¡¡¡¤¤†ã‚£ãς⁄ (å—夕窈)

我将如何正确解析 标题在这里(セrenティー (字幕版)),这样我就可以对值进行INSERT

I have the following xml document:

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

I am using lxml to parse the title as follows:

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

However, when I INSERT this into my database using title.encode(utf-8), I get gibberish:

セレニティー (字幕版)

How would I correctly parse the title here (セレニティー (字幕版)), so I can do an INSERT of the value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴情换悲伤 2025-01-13 17:39:14

确保您的 MySQL 实例也设置为将 Unicode 存储为 UTF-8。

Make sure your MySQL instance is set up to store Unicode as UTF-8 as well.

远昼 2025-01-13 17:39:14

实际上,这对我来说是 lxml 本身的一个问题,他们假设每个人都会默认使用 ASCII/Latin-1,这是愚蠢的。即使尝试以 UTF-8 运行解析器也可能会返回错误,请尝试像这样调用解析器:

解析器 = etree.HTMLParser(encoding='shift-jis')

据我所知,Shift-JIS 仍然是日语页面最常见的字符集。我的 Python/lxml 模块 http://github.com/caio1982/Amazon-Wishlist 适用于日语使用上述内容的页面。

Actually this is a problem in lxml itself to me, they assume everybody will use ASCII/Latin-1 by default, which is stupid. Even trying to run the parser in UTF-8 may return errors to you, try calling the parser like this:

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

Shift-JIS is still the most common charset for pages in Japanese, as far as I can see. My Python/lxml module http://github.com/caio1982/Amazon-Wishlist works with Japanese pages using the above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文