如何在Java中创建真正的挪威字符文件?

如何在Java中创建真正的挪威字符文件?,java,string,unicode,encoding,Java,String,Unicode,Encoding,下面是我用来读取文件的代码 InputStreamReader iReader = new InputStreamReader(new FileInputStream("myrecords.txt"),"ISO-8859-1"); BufferedReader bReader = new BufferedReader(iReader); public static List<String> bufferedReaderToStringList(BufferedReader bRea

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

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;
}

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


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

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

InputStreamReader iReader = new InputStreamReader(
        new FileInputStream("myrecords.xml"), "ISO-8859-1");
BufferedReader只处理(假定正确的)文本

因此,只有InputStreamReader可能是错误的。这可以通过XML文件进行检查

默认情况下,XML在UTF-8中,由
中的编码覆盖。在某些情况下,这可能是错误的,但单击XML将很容易显示其正确性

现在,读者,字符串等应该是正确的,给定正确的编码

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


再次输出到文件时,需要指定所需的文件内容编码。另外,您还需要保持
中的编码正确。

您可以共享文件myrecords.xml的示例内容吗?当您需要
UTF-8
时,为什么要以
ISO-8859-1
的形式打开InputputStream?@Terrary Wombat:它也不能作为UTF-8工作。感谢您的回复,可能会重复。我已经用简单的文本文件完成了,但得到了相同的错误。在屏幕上显示或插入数据库时。当我在本地运行它时,它是好的。您可以尝试ISO-8859-4也为挪威。或者使用Windows Latin-1(Windows-1252)代替Latin-1(ISO-8859-1),例如,它实际上在浏览器中使用。XML很好,因为在浏览器中打开它会影响XML中指定的编码。因此可以直观地检查其编码,并使用它读取XML。读数可能是正确的,但到屏幕的输出编码不正确,或者控制台无法使用该编码。作为最后手段,需要将字符代码转储为数字,并进行检查。数据库是一个额外的步骤。您可以使用一个编码感知的程序员编辑器,如记事本++或JEdit。我无法使用Putty和文本框正确打印它。我已经使用了ISO-8859-1和-4,但在第一步。确定XML文件的编码。使用十六进制转储(linux
hextump
)/JEdit/Notepad++。或者用正确的编码制作一个文本文件,并进行测试。
InputStreamReader iReader = new InputStreamReader(
        new FileInputStream("myrecords.xml"), "ISO-8859-1");
BufferedReader bReader = new BufferedReader(iReader);