【问题标题】:Netbeans does not decode special charactersNetbeans 不解码特殊字符
【发布时间】:2016-04-02 18:03:51
【问题描述】:

我正在尝试使用 Jsoup 解析 HTML 文件。在这个 HTML 中,有一个我想要删除的特殊字符 (€),它最初是这样的:

<span class="price-value">
    49,99 €
</span>

但是,Netbeans 在打印该元素时会显示:

49.99 ?

因此,我不能这样做:

price.replace( "€", "" ).replace( ",", "." ).trim();

这都不是:

price.replace( "\\?", "" ).replace( ",", "." ).trim();

我该怎么办?

【问题讨论】:

标签: java html netbeans encoding jsoup


【解决方案1】:

Netbeans 在打印该元素时显示此内容

几乎可以肯定,这是因为您的 NetBeans 控制台尚未配置为支持 Unicode 字符,这就是您被误导的原因。有关该问题的解决方案,请参阅:How to change default encoding in NetBeans 8.0

所以,文档没问题,正则表达式可以正常工作,无需更改任何其他内容。

这是正确解析原始文档、替换欧元符号并返回49.99 的最小工作示例。

Element doc = Jsoup.parse("<html><body><span class=\"price-value\">49,99 €</span></body></html>");
Element span = doc.select("span").get(0);
System.out.println( span.text().replace("€", "").replace(",", ".").trim() );

【讨论】:

  • 这很奇怪,因为它一直工作到现在。我已经重新安装了 Netbeans,现在它可以正常工作了。
【解决方案2】:

修改自here:

要匹配单个字符,您可以简单地将它们包含在一个字符类中,无论是作为文字还是通过\u20AC 语法

欧元的 unicode 是 \u20AC


注意:我不确定为什么它会显示为 ?,但这可能只是因为它不是 ASCII,并且可能在字体中丢失。

【讨论】:

    【解决方案3】:

    使用这个 ->

    <span class="price-value">
    49,99 &euro;
    </span>
    

    是HTML中€符号的表示

    【讨论】:

      猜你喜欢
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      相关资源
      最近更新 更多