Как работают кодировки?
У меня есть следующий код:
import java.io.*;
class Main{
public static void main(String[] args) throws Throwable{
PrintWriter aa = new PrintWriter("qwer.txt", "UTF-8");
aa.write('й');
aa.flush();
FileInputStream j = new FileInputStream("qwer.txt");
System.out.println(j.read());
System.out.println(j.read());
InputStreamReader g = new InputStreamReader(new FileInputStream("qwer.txt"), "UTF-8");
System.out.println(g.read());
}
}
Я создаю символьный поток с кодировкой UTF-8 и записываю в файл символ й.
Согласно следующей таблице:
значения символа й в кодировке UTF-8 равно 53433 или 208 и 185 если по байтам. Метод j.read() байтового потока, вызванный два раза подряд, выдаёт вполне логичные две строчки 208 и 185. После чего я создаю символьный поток ввода для того, чтобы прочитать сразу один символ. Создаю его в той же кодировке. Я ожидаю, что метод g.read() вернёт число 53433, но к моему удивлению он возвращает 1081. Причём я попробовал все возможные кодировки и если методы j.read() всегда изменяет своё значение согласно данной таблице, то вот g.read() каждый раз возвращает 1081. Почему ?
