public static void main(String args[]){ try{ FileInputStream fs = new FileInputStream("test.txt"); int i = fs.read(); while(i != -1){ System.out.println( i); i = fs.read(); } }catch(Exception e){ System.out.println(e); } }test.txt 文件包含“?”。輸出是 196 140 。? 的 UTF-16 值是 268 。你能幫我看看為什么答案是 196 和 140
2 回答

斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
如果不指定特定編碼,Java 將默認使用“UTF-8”字符編碼。
? 的 UTF-8(十六進制)是 0xC4 0x8C,分別轉換為十進制為 196 和 140。當使用 UTF-16 編碼時,C 由 0x010C 的十六進制值表示,轉換為十進制為 268。

明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
嘗試創建InputStreamReader isr = new InputStreamReader(new FileInputStream("test.txt"), StandardCharsets.UTF_16);
或者提供一些其他合適的字符集編碼值。
添加回答
舉報
0/150
提交
取消