Если я напрямую установлю кодовую точку для метода setText JTextArea, он будет работать правильно!
Если под этим вы подразумеваете что-то вроде myTextArea.setText('\u0645')
, то проблема довольно ясна:
Java-компилятор интерпретирует \u
как начало экранирования Unicode . Это означает, что anyhwere в исходном коде Java символы \u0645
полностью эквивалентны фактическому размещению символа م
(Unicode-символ U + 0645 ARABIC LETTER MEEM ) в том же месте .
Итак, следующие две строки делают одно и то же:
myTextArea.setText('\u0645')
myTextArea.setText('م')
Причина этого в том, что во время компиляции \u0645
превращается в соответствующий символ Unicode.
Это совершенно другая ситуация, если у вас есть строка Java, содержащая 6 символов \u0645
. Эта строка может быть представлена как литерал Java String "\\u0645"
(обратите внимание на двойной обратный слеш, чтобы компилятор не интерпретировал escape-код Unicode).
В этом случае вы можете взять третий с последнего символа ("\\u0645".subString(2)
), проанализировать его как шестнадцатеричное число (с Integer.parseInt(theString, 16)
) и привести результат к char
. Тогда у вас будет char
значение, содержащее фактический символ Unicode.