Кодовые точки, кодовые единицы. Тип char, String

191
09 января 2019, 08:10

Как я прочитал в книге К. Хорстмана, что некоторые символы из UNICODE представляются с дополнением. Так вот меня интересует логическое представление этого. То есть, там имеется ввиду, что каждый символ в строке, к примеру "abc", может быть с дополнением, то при вызове charAt(i) я получу символ, если это символ с дополнением, или получу само дополнение? Если я получу само дополнение, то как мне получить посимвольно всю строку?

Answer 1

Некоторые символы юникода действительно представляются в виде 2 последовательных char,т.к. char вмещает 2 байта и представляет по сути символ из UTF-16 здесь описано как символы юникода кодируются в UTF-16,см. суррогатные пары

то при вызове charAt(i) я получу символ, если это символ с дополнением, или получу само дополнение?

Зависит от того при каком i вызовешь. Если подобных символов несколько,велика вероятность что получишь совсем не то что ожидал,так как сколько-то символов до этого уже было представлено в виде 2 char. Но допустим это самый левый символ в строке, тогда при вызове charAt(0) и charAt(1), ты получишь первый и второй char суррогатной пары Сам символ(его Unicode код) можно получить вызвав codePointAt(0),при этом codePointAt(0) вернет то же самое, что и charAt(1)

как мне получить посимвольно всю строку?

"string".codePoints()
READ ALSO
android login to onlyoffice

android login to onlyoffice

Никак не могу добиться JSON ответа от сервера OnlyOffice, приходит plain/text, всю голову сломал, использую async-http:14

185
Laravel css и .htaccess RewriteRule

Laravel css и .htaccess RewriteRule

Поставил свежий Laravel 55, переименовал server

135
Как сделать видимыми другие теги, когда тег canvas html 5 растянут на весь экран?

Как сделать видимыми другие теги, когда тег canvas html 5 растянут на весь экран?

Игра отрисовывается в canvas, для удобства есть кнопка сделать на весь экран

194