Преобразование строки в байтовый массив - PullRequest
0 голосов
/ 11 июля 2019
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 ]

4 голосов
/ 11 июля 2019

Если вы не укажете определенную кодировку, Java по умолчанию использует кодировку символов «UTF-8».

UTF-8 (шестнадцатеричное) для Č равно 0xC4 0x8C, что переводит в десятичную форму как 196 и 140 соответственно. При использовании UTF-16 для кодирования Č представляется шестнадцатеричным значением 0x010C, которое при преобразовании в десятичное число становится 268.

0 голосов
/ 11 июля 2019

Попробуйте создать InputStreamReader isr = new InputStreamReader(new FileInputStream("test.txt"), StandardCharsets.UTF_16);

Или укажите другое подходящее значение кодировки charset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...