gpt4 book ai didi

Java 按字符读取文本文件 - unicode 254 和 255 突然出现

转载 作者:行者123 更新时间:2023-12-01 19:00:14 27 4
gpt4 key购买 nike

从下面的代码中我读取了一个包含字符“a”(unicode 97)的文本文件

int ini ; 
// Buffered Reader Text file read per character
while((ini=jer.read())!=(-1)){
char inp = (char)ini;
System.out.println(inp);
if (listahan.containsKey(inp)) {
listahan.put(inp,listahan.get(inp) + 1);
} else {
listahan.put(inp, 1);
}
}
// ENHANCED FOR LOOP FOR DISPLAYING IN CONSOLE
for (Map.Entry<Character, Integer> e : listahan.entrySet()){
System.out.printf("%1d.) %-15s : %-3d%n", ctr++, e.getKey(), e.getValue());

}

输出是:

1.)                 : 1  // (must be a null)
2.) a : 1
3.) þ : 1
4.) ÿ : 1

为什么输出不是这样的?:

1.) a                 :1

最佳答案

您遇到了 Byte Order Mark ,为 U+FEFF,即当作为单独字节读取时,相当于 254 和 255。

这(连同空值的出现)可能意味着该文件是在 UTF-16 中编码的。或UCS-2 (又名宽字符串、wchar,...)。如果您不知道 unicode 编码的含义,我建议您阅读一下。为此,我推荐这篇很棒的文章The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) .

关于Java 按字符读取文本文件 - unicode 254 和 255 突然出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com