我遇到了两个似乎没有被ISO-8859-1
字符集覆盖的特殊字符,即它们没有通过我的程序。
德国人ß
和挪威语ø
我正在阅读如下文件:
FileInputStream inputFile = new FileInputStream(corpus[i]);
InputStreamReader ir = new InputStreamReader(inputFile, "ISO-8859-1") ;
我是否有办法阅读这些字符而无需将手动替换作为解决方法?
[编辑]
这就是它在屏幕上的样子。请注意,我对其他重音没有问题,例如è和很多...
答案 0 :(得分:3)
这两个字符都出现在ISO-Latin-1中(查看我的名字,看看为什么我会调查这个)。
如果没有正确读取字符,最可能的原因是文件中的文本不是以该编码保存,而是以其他方式保存。
根据您的操作系统和文件来源,可能的编码可能是UTF-8或Windows代码页,如850或437。
最简单的方法是使用十六进制编辑器查看文件,并报告为这两个字符保存的确切值。
答案 1 :(得分:1)
假设您的文件可能是UTF-8编码的,请尝试以下操作:
InputStreamReader ir = new InputStreamReader(inputFile, "UTF-8");
答案 2 :(得分:1)
ISO-8859-1 covers ß and ø,因此文件可能以不同的编码保存。您应该将文件的编码传递给new InputStreamReader()
。