Java扫描程序返回unknownş等未知字符

时间:2015-10-21 09:58:18

标签: java file java.util.scanner reader

您好我正在尝试在Java上编写一个单词计数器类。我想我正在从基本文件夹中读取带有扫描仪的文件并将它们打印到控制台。但是,第一项文件返回前缀为ÿş或有时?两个问号。文件中的每个项目都是字符串。这是我的源代码,我无法设法处理这个,所以请任何帮助将不胜感激,谢谢......(顺便说一句,我使用的是JCreator LE 4.5)

$scope.remove = function(index){

    $scope.items.splice(index, 1);
    //results in [Object, Object, undefined, Object, ...]

    //add the following code
    $scope.items.pop();
    //results in [Object, Object, Object, ...] the undefined has gone

};

1 个答案:

答案 0 :(得分:0)

使用UTF-16 BOM bytes FF FE打印{p> ÿş Windows 1254 codepage,我认为这是您的系统默认设置。

要正确读取文件,您需要跳过BOM,这可以使用Apache Commons IO BOMInputStream包装器完成:

try (BOMInputStream bis = new BOMInputStream(new FileInputStream(filename));
     Scanner in = new Scanner(bis, bis.getBOMCharsetName() == null 
                                   ? Charset.defaultCharset().name() 
                                   : bis.getBOMCharsetName())) {
     // read lines

} catch (IOException e) {
     // ...
}

或者您可以手动跳过这两个字节,如this post的答案中所述。