
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
21.04.2015, 18:22
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. выдает: 1.8.0_20-b26 len=1 [0]=63 Вопрос: правильно ли это? Я читаю статью utf-8 в википедии, там написано что диапазон 0x800-0xffff представляется тремя байтами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 18:30
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
63 - это код символа "?". Я думаю, что 0xd800 - это или неиспользуемый код, или он не поддерживается джавой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 18:37
|
|||
|---|---|---|---|
|
|||
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Посмотри таблицу символов. Скорее всего дело именно в самом символе. D800 - это суррогат а не конкретный символ. С символами работает нормально. Читай дальше про UTF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 18:41
|
|||
|---|---|---|---|
|
|||
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
На сколько я понял, суррогат это такой префикс 2х-3х байтового символа, который сам по себе ничего не значит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 18:42
|
|||
|---|---|---|---|
|
|||
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
chabapok, Обрати внимание и на методы класса Character - там есть и проверка на суррогаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 18:50
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Хм... String.getBytes() зело хитрый метод. Много depencencies. Для символа который попал в диапазон High Surrogate Area Range: D800-DBFF Isolated surrogate code points have no interpretation; consequently, no character code charts or names lists are provided for this range. See http://www.unicode.org/charts/ for access to a complete list of the latest character code charts метод вернул вопросик '?' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 18:51
|
|||
|---|---|---|---|
|
|||
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Внутри UTF-8 и UTF-32 вообще не может быть суррогатов - суррогатные пары могут быть только в UTF-16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 19:02
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
нашел статью http://en.wikibooks.org/wiki/Unicode/Character_reference/D000-DFFF и далее по ссылкам. там можно братить внимание на "Unicode range D800–DFFF is used as surrogate pair in UTF-16 (used by Windows) and CESU-8 transformation formats, allowing these encodings to represent the supplementary plane code points, whose values are too large to fit in 16 bits..." Character.isHighSurrogate возвращает true для диапазона d800 - dbff C перекодировка dc00 тоже идет в однобайтовый 63 видимо там действительно диапазон служебный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 19:05
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Как все сложно. Есть не только верхние, но и нажние суррогаты. Вобщем, вцелом ясно куда копать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 19:05
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Могу добавить, что джава как раз использует UTF-16. Так исторически сложилось, что тип char - 16-битный, поэтому, когда юникод вырос за пределы 65536 символов, начали использовать пары соседних char-ов для кодирования одного символа. Именно поэтому, например, число, возвращаемое String.length(), не является длиной строки в *символах* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 19:16
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
эээ... а можно пример такого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 19:25
|
|||
|---|---|---|---|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Вопрос снимается. В описании Characher все написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.04.2015, 20:19
|
|||
|---|---|---|---|
|
|||
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Basil A. SidorovВнутри UTF-8 и UTF-32 вообще не может быть суррогатов - суррогатные пары могут быть только в UTF-16. Ну, значит с точки зрения UTF-8 это просто зарезервированные значения, которые в Unicode не имеют соответствующих символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.04.2015, 17:33
|
|||
|---|---|---|---|
|
|||
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз. |
|||
|
#18+
Коды из "суррогатного диапазона" - повреждённый UTF-8/-32. Технически ничто не мешает вставлять их хоть по одному, хоть парой, но результат будет именно таким. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2125515]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
150ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 506ms |

| 0 / 0 |
