Java抓取字符集问题

标签 java eclipse ubuntu character-encoding wikipedia

我正在使用 Java 抓取维基百科页面,以提取信息框中包含的信息。

除了字符编码之外,一切正常。 维基百科页面使用“UTF-8”编码。

Ubuntu eclipse 控制台也使用“UTF-8”作为默认编码。 然而,当显示抓取的信息时,Eclipse 控制台会显示一些奇怪的符号。 (例如:Smith·Ricardo 而不是 Smith·Ricardo)

这是我用来读取数据的函数(它遍历节点的所有后代并在末尾加入它们的文本信息):

private String getTextContent(Node node) {
    String text = "";
    List<Node> children = null;     

    if (isTextNode(node)) {
        return node.getNodeValue();
    }
    else if (!node.hasChildNodes()) {
        return "";
    }
    else {
        children = toList(node.getChildNodes());
        for (Node childNode : children) {
            text += getTextContent(childNode);
        }
    }
    return text;
}

我忘了提及我正在使用 JTidy 库进行抓取。

最佳答案

控制台可能会正确解释 UTF-8,但如果您在通过网络读取数据时得到了错误的编码,那么您就会遇到问题。

指定 UTF-8 作为 JTidy 使用的编码。

关于Java抓取字符集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878424/

相关文章:

java - 从数据库中获取值并将该值用作 Selenium Webdriver 中的输入字段

apache - 错误 apache2.service”和 "journalctl -xe"

java - 如何使用 XJC 影响组声明的类生成

java - GWT 与外部独立应用程序交互

java - 尝试启动 Activity 导致抛出异常,不确定原因

Java 8 流按数字邻近度对条目进行分组

java - Eclipse Java项目文件夹组织

eclipse - 改变backward-word和backward-kill-word的行为

bash 脚本因多个参数而失败

php - Docker - Ubuntu - Nginx - MariaDB - 连接被拒绝