Если UTF-8 не является вашей кодировкой символов по умолчанию для платформы, вам необходимо убедиться, что исходный файл сохранен в UTF-8 en кодирования, а затем указать параметр -encoding UTF-8
при компиляции (или другой кодировке символов, которая поддерживает β
).
Ваш код неверен, потому что вы принимаете char
, который составляет 16 бит, и измельчает его пополам, сохраняя только нижние 8 бит. Сужение бросков может уничтожить данные; они должны быть написаны явно, чтобы заставить вас задуматься о том, что вы делаете.
Ваш код выглядит так:
int code = 0x000003B2;
byte[] b = { 0xB2 };
Байт последовательность 0xB2 не является допустимым UTF-8, поэтому он декодируется с заменой символа, �
(U + FFFD) в строке s
. Если ваше устройство вывода не настроено для отображения этого символа, оно будет заменено другим символом замены на выходе, ?
.
Если вы кодирования правильно в редакторе и компилятор, это должно работать:
int code = 'β';
System.out.printf("U+%04X%n", code);
Я получаю 63 3f 003F 003F ? ? как выход –
Я не могу это объяснить. Я только что вставил точный код, который использовал, и я его протестировал. –
Unicode 003F - знак вопроса. Возможно, по какой-то причине бета-символ не распознается и рассматривается как «?». –