2015-11-12 3 views
0

Я получаю незаконный escape-код unicode для следующего кода.Печать символов Юникода с циклом шестнадцатеричного кода

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

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

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

+0

Просьба: http://stackoverflow.com/questions/6230190/convert-international-string-to-u-codes-in-java –

ответ

3

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

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

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

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

Или согласно this использования ответить на этот вопрос: -

for(int i=3400;i<4000;i++){ 
    System.out.println("\\u" + Integer.toHexString(i| 0x10000).substring(1)); 
} 
1

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

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

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

Смежные вопросы