【问题标题】:Accented characters : difference before and after compilation重音字符:编译前后的区别
【发布时间】:2013-07-30 20:33:20
【问题描述】:

我制作了一个轻量级应用程序,它读取页面的 HTML 代码并将其显示给用户。

在使用 NetBeans 的开发过程中,完全没有问题,但是当我在“干净构建”之后使用这个 IDE 提供的 .jar 时,我在重音方面遇到了一些问题。

例如,法语单词 "renégocier" 在 NetBeans 下显示为这样。 但是使用干净的 NetBeans 构建,会显示 "renégocier" ...

有什么想法吗?

编辑:这就是我阅读 HTML 代码的方式:

URL urlObject=null;
URLConnection con=null;
String inputLine;
String codeHTML

urlObject = new URL(UrlToVerification);
con = urlObject.openConnection();
BufferedReader webData = new BufferedReader(new     InputStreamReader(con.getInputStream()));

while ((inputLine = webData.readLine()) != null)
{
    codeHTML += inputLine; // Lecture du code HTML
 }

解决方案:

替换:

BufferedReader webData = new BufferedReader(new     InputStreamReader(con.getInputStream()));

与:

BufferedReader webData = new BufferedReader(new InputStreamReader(urlObject.openStream(), "UTF-8"));

【问题讨论】:

  • 字符串从何而来?源文件?资源文件?从网址下载?本地文件?
  • 它来自一个 URL。我阅读了 HTML 代码并显示了其中的一些部分。
  • 显示代码。 (您很可能使用错误的字符编码将 html 字节转换为字符串,但如果没有您的代码很难具体说明)。
  • 将代码添加到您的问题中

标签: java netbeans diacritics non-ascii-characters


【解决方案1】:

您的代码在读取 url 内容时使用平台默认字符编码。相反,您需要将显式字符编码传递给InputStreamReader。这应该是 url 本身指定的编码(这应该包含在 "Content-Type" 标头中)。如果字符编码未包含在相关标头中,则需要选择适当的默认值。

【讨论】:

  • 不错!对于 UTF8 编码: BufferedReader webData = new BufferedReader(new InputStreamReader(con.getInputStream()));谢谢!
  • @Eric - 你打错了吗?对于 utf-8 编码,您需要InputStreamReader(con.getInputStream(), "UTF-8")
猜你喜欢
  • 1970-01-01
  • 2016-02-07
  • 2013-06-09
  • 2021-02-20
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2016-04-20
  • 2013-12-18
相关资源
最近更新 更多