Ответ 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);
(Эти две строки равны.)
Сказав все это, ваша консоль все равно должна будет поддерживать этот символ - вам нужно попробовать, чтобы узнать, действительно ли это делает.