我不明白这一点。它只发生在linux中(在我的机器上运行正常)。它只发生在我正在阅读的文件中有特殊字符时。这可能是linux和Character.equals()的问题吗?
调用HashMap.get()
的另一个函数中的代码。这会使用像Ã。
Hashmap.get()
打印“null”
fis = new FileInputStream(fromFile);
int fromCharInt;
//read a byte at a time from the file
while ((fromCharInt = fis.read()) != -1) {
System.out.println((char)fromCharInt); //prints Ã
System.out.println(hMap.get((char)fromCharInt)); //prints null
}
生成HashMap
private static HashMap<Character, String> generateMap(HuffmanTree hTree, List<FreqTracker> freqs)
{
HashMap<Character, String> hMap = new HashMap<Character, String>();
BinaryNode<FreqTracker> charNode;
for (FreqTracker freq: freqs)
{
charNode = HuffmanTree.findCharNode(freq.getC(), hTree.getRoot());
hMap.put(freq.getC(), HuffmanTree.getBinaryCode(charNode, ""));
}
return hMap;
}
答案 0 :(得分:1)
您正在从InputStream读取单个字节(这是InputStreams所做的...)。将其更改为* Reader并使用正确的字符编码打开它,并从Reader中读取字符,而不是字节。特殊字符通常是多个字节,默认情况下Linux通常是UTF-8编码,因此您的问题