Подтвердить что ты не робот

Как написать символ символа unicode в Java?

Я пытаюсь написать этот символ unicode cross (𐀵) в Java:

class A {
    public static void main(String[] args) {
        System.out.println("\u2300");
        System.out.println("\u10035");
    }
}

Я могу написать o с помощью строки через него () просто отлично, но крест-символ не отображается, вместо этого он просто печатает номер 5:

# javac A.java && java A
⌀
ဃ5

Почему?

4b9b3361

Ответ 1

Вы ищете U + 10035, который находится за пределами Basic Multilingual Plane. Это означает, что вы не можете использовать \u для указания значения, так как это относится только к U + 0000 к U + FFFF - всегда есть ровно четыре шестнадцатеричных цифры после \u. Итак, в настоящее время у вас есть U + 1003 ( "MYANMAR LETTER GHA" ), а затем '5'.

К сожалению, Java не предоставляет строковый литерал, который заставляет символы, отличные от BMP, просто выразить. Единственный способ включить его в литерал (но все еще в ASCII) - использовать пару суррогатных пар UTF-16:

String cross = "\ud800\udc35";

В качестве альтернативы вы можете использовать 32-битную текстовую форму в виде int:

String cross = new String(new int[] { 0x10035 }, 0, 1);

(Эти две строки равны.)

Сказав все это, ваша консоль все равно должна будет поддерживать этот символ - вам нужно попробовать, чтобы узнать, действительно ли это делает.

Ответ 2

Я считаю, что Java представляет символы Unicode от 0x0000 до 0xFFFF. Java оценила бы "\u10035" как бы то ни было "\u1003", и после этого 5.

Ответ 4

Выходы Unicode длиной 4 символа. Вы печатаете \u1003, а затем '5'. Вы уверены, что у вас есть правильный код?