gpt4 book ai didi

java - 用java解析阿拉伯文/中文/日文RSS提要

转载 作者:行者123 更新时间:2023-11-30 05:07:54 28 4
gpt4 key购买 nike

我正在用 java 编写一个 rss feed 解析器,在解析包含阿拉伯文/中文/日文字符的 feed 时遇到了问题。 Example feed

当我打印它们时,我只是得到一组问号“?????? ?? ?????? ??”。

它们最终出现在我的数据库中(mysql,通过hibernate连接,将utf8设置为编码)也像这样。

这是负责从 feed 中获取标题的代码部分:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse(url.openStream());
doc.getDocumentElement().normalize();

Node channelNode = doc.getElementsByTagName("channel").item(0);

NodeList channelList = channelNode.getChildNodes();

for (int i = 0; i < channelList.getLength(); i++) {
Node element = channelList.item(i);

String name = element.getNodeName();

if (name.equalsIgnoreCase("title")) {
rssName = element.getTextContent();
break;
}
}

如何将正确的字符存入数据库?当我从提要中复制它们并手动插入数据库时​​,就可以了。

谢谢

更新:
在我的 hibernate 配置中添加额外的行解决了这个问题:

<property name="hibernate.connection.useUnicode">true</property>  
<property name="hibernate.connection.characterEncoding">UTF-8</property>

最佳答案

您需要更改 Hibernate 配置中的 MySQL JDBC URL 以包含以下参数:

jdbc:mysql://hostname:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

否则 MySQL JDBC 驱动程序将使用客户端平台默认编码。

您的数据库编码完全没问题,因为手动插入显然工作得很好。 XML 通常默认解析为 UTF-8,因此该部分也很好(除非在 XML 声明 header 中明确指定,但情况可能并非如此,因为这将是 RSS 提要服务器的错误)。

关于java - 用java解析阿拉伯文/中文/日文RSS提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470919/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com