|
|
|
Правильно ли отрабатывает 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:22 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
63 - это код символа "?". Я думаю, что 0xd800 - это или неиспользуемый код, или он не поддерживается джавой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 18:30 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
Посмотри таблицу символов. Скорее всего дело именно в самом символе. D800 - это суррогат а не конкретный символ. С символами работает нормально. Читай дальше про UTF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 18:37 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
На сколько я понял, суррогат это такой префикс 2х-3х байтового символа, который сам по себе ничего не значит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 18:41 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
chabapok, Обрати внимание и на методы класса Character - там есть и проверка на суррогаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 18:42 |
|
||
|
Правильно ли отрабатывает 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:50 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
Внутри UTF-8 и UTF-32 вообще не может быть суррогатов - суррогатные пары могут быть только в UTF-16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 18:51 |
|
||
|
Правильно ли отрабатывает 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:02 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
Как все сложно. Есть не только верхние, но и нажние суррогаты. Вобщем, вцелом ясно куда копать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 19:05 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
Могу добавить, что джава как раз использует UTF-16. Так исторически сложилось, что тип char - 16-битный, поэтому, когда юникод вырос за пределы 65536 символов, начали использовать пары соседних char-ов для кодирования одного символа. Именно поэтому, например, число, возвращаемое String.length(), не является длиной строки в *символах* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 19:05 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
эээ... а можно пример такого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 19:16 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
Вопрос снимается. В описании Characher все написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 19:25 |
|
||
|
Правильно ли отрабатывает String.getBytes(). Преверьте меня, плыз.
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВнутри UTF-8 и UTF-32 вообще не может быть суррогатов - суррогатные пары могут быть только в UTF-16. Ну, значит с точки зрения UTF-8 это просто зарезервированные значения, которые в Unicode не имеют соответствующих символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 20:19 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38941916&tid=2125515]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 436ms |

| 0 / 0 |
