【问题标题】:How to real norwegian characters file in Java?如何在 Java 中生成真正的挪威字符文件?
【发布时间】:2016-07-08 05:28:27
【问题描述】:

以下是我用来读取文件的代码。

InputStreamReader iReader = new InputStreamReader(new FileInputStream("myrecords.txt"),"ISO-8859-1");
BufferedReader bReader = new BufferedReader(iReader);

public static List<String> bufferedReaderToStringList(BufferedReader bReader) throws IOException {
    List<String> stringList = new ArrayList<String>();
    String text;
    while ((text = bReader.readLine()) != null) {
        stringList.add(text);
    }
    bReader.close();
    return stringList;
}

当我从字符串中获取数据并打印时,所有字符都会被扭曲。在我的腻子屏幕上,即使我将它保存在数据库中,它仍然是扭曲的。请大家帮忙解决问题

有人请指导我哪里做错了吗?

Dolvenh�yda is distorted one. It is Norwegian character. 
Dolvenhøyda is correct one. 

【问题讨论】:

标签: java string unicode encoding


【解决方案1】:

您是如何将文本打印到控制台的?可能是控制台假设utf-8 中的字符,而它们实际上是iso-...

“转换”打印的字符串可能会解决问题:Charset.forName("UTF-8").encode(myString)

【讨论】:

    【解决方案2】:

    InputStreamReader 将 InputStream(二进制数据)与其编码(此处为 ISO-8859-1)一起包装以读取文本,在 Java 内部以 Unicode 形式保存。编码必须正确。

    InputStreamReader iReader = new InputStreamReader(
            new FileInputStream("myrecords.xml"), "ISO-8859-1");
    

    BufferedReader 只处理(假设是正确的)文本。

    BufferedReader bReader = new BufferedReader(iReader);
    

    因此只有 InputStreamReader 可能是错误的。您可以使用 XML 文件进行检查。

    XML 默认为 UTF-8,被&lt;?xml ... encoding=... ?&gt; 中的编码覆盖。在某些情况下,这可能是错误的,但单击 XML 将很容易显示其正确性。

    现在 Reader、String 等应该是正确的,给定正确的编码。

    但是输出到控制台 (System.out) 使用操作系统编码,这可能会破坏给定的文本。

    再次输出到文件时,需要指定文件内容的所需编码。还需要保持&lt;?xml encoding=... ?&gt; 中的编码正确。

    【讨论】:

    • 感谢您的回复。我已经使用简单的文本文件完成了它,但得到了同样的错误。在屏幕上显示或插入数据库时​​。当我在本地运行它时很好。
    • 挪威语也可以尝试 ISO-8859-4。或者使用 Windows Latin-1 (Windows-1252) 代替 Latin-1 (ISO-8859-1),例如实际在浏览器中使用。 XML 很好,因为在浏览器中打开它会影响 XML 中指定的编码。因此可以直观地检查其编码,并使用它来读取 XML。读数可能是正确的,但屏幕编码的输出不正确,或者控制台无法使用该编码。作为最后的手段,需要将字符代码转储为数字,并检查它们。数据库是一个附加步骤。
    • 您可以使用编码感知程序员的编辑器,例如 Notepad++ 或 JEdit。
    • 我无法使用 Putty 和文本框正确打印。我已经使用了 ISO-8859-1 和 -4,但在静脉中
    • 第一步。确定 XML 文件的编码。使用十六进制转储 (linux hexdump) / JEdit / Notepad++。或者以正确的编码制作一个文本文件,然后进行测试。
    猜你喜欢
    • 2015-11-12
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多