【问题标题】:Slovak characters are getting messed up when reading from csv file in java从 java 中的 csv 文件读取时,斯洛伐克语字符变得混乱
【发布时间】:2012-06-21 13:49:32
【问题描述】:

我正在尝试通过包含一些斯洛伐克语字符的 InputStream 读取逗号分隔的文件,因此我在 InputStream 参数中传递了正确的字符编码。 但是角色仍然会变得一团糟。

InputStreamReader stream = new InputStreamReader(inputStreamToExcel,"ISO-8859-2");

例如dd890èš 变成 dd890č 最后两个斯洛伐克字符搞砸了。

请帮忙。

【问题讨论】:

  • 您如何确定“正确的”编码是 ISO-8859-2?什么产生了这个文件?
  • @Jon Skeet 也可以与 ISO-8859-2ISO8859_2 一起使用 (Windows cp1250)
  • @Infotechie Windows XP 可以忽略 Java 中的任何设置(在某些情况下),您必须获得用于文件的正确字符集,我编写了自己的测试类?或正方形
  • @mKorbel:你所说的“合作”是什么意思?除非您拥有 OP 的原始文件,否则您无法判断 ISO-8859-2 是否正确对于该文件,这很重要。
  • @Jon Skeet 接受ISO-8859-2ISO8859_2 这两个数字,请在此处查看我已删除的帖子

标签: java unicode inputstream


【解决方案1】:

这是因为您的编码。 您正在使用“ISO-8859-2”编码创建 InputStreamReader。

尝试使用“UTF-8”。同时检查文件的编码是什么。

【讨论】:

    【解决方案2】:

    您可以使用 Notepad++ (Encoding->Character Set) 或其他编辑器来确定文件的编码方式。您的代码没有任何问题。你只需要找到正确的编码。

    【讨论】:

    【解决方案3】:

    org.apache.commons.lang.StringEscapeUtils escapeHtml(value) 解决了这个问题。通过 escapeHTML,我能够看到准确的 html 实体代码,这有助于我分析应用程序读取了正确的字符。但是当它被分配给 String 时,它以某种方式被转换为错误的格式。但是,当将 unescapedHtml 字符串传递给浏览器时,它会被浏览器正确显示,因为浏览器可以正确理解 HTML 实体代码。

    参考:http://www.w3schools.com/tags/ref_ascii.asp http://www.alanwood.net/demos/ansi.html

    这是我的分析。如果有人有什么要补充的,请补充。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-10
      • 2014-05-22
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多