Unicode - извлечение символов в строке содержит тамильские буквы в Java - PullRequest
0 голосов
/ 07 марта 2019

Я работаю над поддержкой символов Unicode в системе, поэтому я хочу разделить символы в строку, содержащую тамильские буквы. Я не знаю, обрабатывать строки в Java, кроме английского.

String word = new String("தமிழ்")
String[] chars = word.split("")

Что было выведено

[த, ம, ி, ழ, ்]

Что ожидается

[த, மி, ழ்]

1 Ответ

0 голосов
/ 07 марта 2019

Строка, присвоенная слову, на самом деле состоит из 5 символов Юникода.Например, третий символ (U + 0BFF) объединяется с предыдущим (U + 0BAE?) Для создания одного отображаемого символа.

Поскольку вы разбиваете слово на символы, вы получите 5 символов.Не существует такого единственного символа, как (например) средний символ, отображаемый в исходной строке.

Из-за объединения символов видимое количество символов, отображаемых на экране, не обязательнотак же, как количество символов Unicode.В общем, программы, которые отображают строки Unicode, должны быть осведомлены о комбинировании символов.

См. в этом документе о проблемах тамильского языка в Unicode.На рисунке 12-21 обсуждается гласный звук i, который является средним символом 5.

Не ясно, какова ваша цель разбить строку.Если вам действительно нужны «очевидные символы» (я придумываю этот термин), то вам, вероятно, потребуется отсканировать полученные символы, чтобы найти комбинированные символы.

Этот документ описывает одинподход, который выглядит так, как будто он будет работать для вас, хотя на странице написано, что в выпусках после JDK 8 есть более удобные средства, которые я не нашел времени для поиска.Тем не менее, это может пролить свет на то, что происходит немного более тщательно.

...