猿问

字符串到字节数组的转换

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


千巷猫影
浏览 75回答 2
2回答

斯蒂芬大帝

如果不指定特定编码,Java 将默认使用“UTF-8”字符编码。Č 的 UTF-8(十六进制)是 0xC4 0x8C,分别转换为十进制为 196 和 140。当使用 UTF-16 编码时,C 由 0x010C 的十六进制值表示,转换为十进制为 268。

明月笑刀无情

尝试创建InputStreamReader isr = new InputStreamReader(new FileInputStream("test.txt"), StandardCharsets.UTF_16);或者提供一些其他合适的字符集编码值。
随时随地看视频慕课网APP

相关分类

Java
我要回答