Печать символов Юникода с помощью шестнадцатеричного кода

Я получаю нелегальный Unicode escape для следующего кода.

 for(int i=3400;i<4000;i++)
   System.out.println("\u" + i );

Если я добавлю косую черту до того, как получу \u3400 как вывод вместо фактического символа Юникода.

Я хочу напечатать символы Юникода в цикле. Также символы Юникода являются шестнадцатеричными кодами. Как перебрать шестнадцатеричные коды и распечатать все символы Юникода.

3 ответа

Решение

Вы не можете объединить "\u" с чем-то во время выполнения, потому что "\uXXXX" последовательности анализируются во время компиляции. Однако не нужно этого делать. Вы можете просто привести целые числа к символам и использовать 0x префикс для указания шестнадцатеричных чисел:

for(int i=0x3400;i<0x4000;i++)
    System.out.println((char)i);

То, что вы ищете, это что-то вроде:

    for (int i = 0x3400; i < 0x4000; i++) {
        System.out.println((char) i);
    }

Не стоит забывать, что любое число после \u префикс - шестнадцатеричное число (основание 16). Из этого факта следует, что в вашем цикле вы потеряете много символов Юникода в шестнадцатеричном интервале 3400...4000, Итак, вы должны изменить диапазон цикла 0x3400 а также 0x4000,

Вы можете использовать функциональность формата:-

for(int i=3400;i<4000;i++){
   System.out.format("\\u%04x", i);
}

Или согласно этому ответу используйте это:

for(int i=3400;i<4000;i++){
   System.out.println( "\\u" + Integer.toHexString(i| 0x10000).substring(1));
}
Другие вопросы по тегам