Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
maytonОпиши пожалуйста конкретный кейс (желательно для языков стран ЕС) когда нам не хватает API Utf-16.Нету такого API. Есть (уже странное) желание работать с юникодными строками, как с массивом символов. Не выходит. И никогда не получится, поскольку базовое понятие юникода - составные символы. Таким образом, я не могу просто "ткнуться по индексу" и начать "что-то делать" - сначала надо должен проверить "а не попал ли я куда-то в середину составного символа". Будут символы составными или нет зависит не от кодировки , а от нормализации. А если при любой кодировке надо работать с символами переменной ширины, то UFT-16/UTF-32 не получают никаких таких особых преимуществ перед UTF-8. Наоборот, UTF-8 становится предпочтительной кодировкой, т.к. она обеспечивает обратную совместимость с US-ASCII и возможность работы с юникодом при минимальных правках реализаций, сделанных для US-ASCII. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 17:57 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, еще раз прошу. Опиши кейс использования который мы используем неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 18:15 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
maytonBasil A. Sidorov, еще раз прошу. Опиши кейс использования который мы используем неправильно.Ёжики зелёные! В кодировке UTF-16 это будет 28 байт в нормализации C/KC и 32 байта - в нормализациях D/KD. В UTF-8 - 26 и 30 байт, соответсвенно. Таким образом , в русском алфавите кириллического блока юникода есть четыре символа переменной ширины - "ёЁйЙ". Вы всё ещё хотите обращаться с юникодными символами, как с массивом знакомест? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 18:35 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. таки равны строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 18:39 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Изопропилтаки равны строкиЯсен перец, что равны. Корректная работа с юникодными строками может быть обеспечена при любой кодировке. В ICU их (кодировок) штук двадцать, наверное. Речь, вообще-то, о несколько другом. Апологеты Win API утверждают, что UTF-16 - филосовский камень, а это совсем не так. P.S. Вот когда (если) вы реализуете CompareStringEx() для разных кодировок - тогда и можно будет предметно побеседовать о преимуществах кодировок с фиксированным размером кодовых точек. Правда, подозреваю, что тогда и предмет обсуждения исчезнет за полной эфемерностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 18:54 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov Таким образом , в русском алфавите кириллического блока юникода есть четыре символа переменной ширины - "ёЁйЙ".Не ошибаетесь? Вот к примеру "ё" http://www.fileformat.info/info/unicode/char/0451/index.htm Ниже приведен код. В отладчике установите останов на строке return result; и посмотрите native представление строки s1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 19:17 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovПравда, подозреваю, что тогда и предмет обсуждения исчезнет за полной эфемерностью. предмет и так нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 19:20 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012В отладчике установите останов на строке return result; и посмотрите native представление строки s1 \x0451 - что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 19:24 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Изопропил\x0451 - что не так? Basil A. Sidorov утверждает, что Basil A. Sidorov Таким образом , в русском алфавите кириллического блока юникода есть четыре символа переменной ширины - "ёЁйЙ".Если его правильно понял, то "ё" например представлена не двух байтным кодом. А каким? Еще раз http://graphemica.com/ё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 19:34 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012, многострадальная ё независимо от кодировки (UTF-8,UTF-16 и т д) может быть представлена как одной кодовой точкой (U+0451), так и двумя - (U+0435) (U+0308) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 19:42 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov Таким образом , в русском алфавите кириллического блока юникода есть четыре символа переменной ширины - "ёЁйЙ". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. В отладчике посмотрите на коды символов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 19:43 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
При сравнении через Collator с указанием особенностей страны + языка все чики-пики. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:11 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Изопропилмногострадальная ё независимо от кодировки (UTF-8,UTF-16 и т д) может быть представлена как одной кодовой точкой (U+0451), так и двумя - (U+0435) (U+0308)Решил проверить возможность получения ё с внутренним представлением (U+0435) (U+0308). Вообщем FAR и notepad++ не умеют работать с UTF-16. google помог нашел http://akelpad.sourceforge.net/. Создал текстовый файлик, содержащий текст "ёЁйЙ" и с помощью FAR посмотрел кодовое представление. Итого имеем: 0000000000: FEFF 0451 0401 0439 0419 ?ёЁйЙ На всякий случай кому интересно ниже приведено объяснение почему в начале файла находится код 0xFEFF https://ru.wikipedia.org/wiki/UTF-16 Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:29 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Вообщем FAR и notepad++ не умеют работать с UTF-16. композитные символы не имеет никакого отношения к кодировке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:35 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Если его правильно понялНеправильно. Один и тот же символ может быть представлен как одним кодом, так и несколькими. От кодировки это не зависит. Поэтому, вне зависимости от кодировки, символы юникода должны рассматриваться, как имеющими переменную длину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:44 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Вообщем то Basil A. Sidorov предостерегает, что с строкой в коде UTF-16 нельзя работать как с массивом. Что-то в этом есть. Может кто четко сформулировать в каком случае так с ней работать нельзя? Вообщем то согласно https://ru.wikipedia.org/wiki/UTF-16 понятно когда UTF-16 имеет не двух байтовый код. Но если не ошибаюсь, то для программ, которые работают с общепринятыми кодовыми страницами /CP1251, .../ мы не столкнемся с багами ... См. что говорится на странице https://ru.wikipedia.org/wiki/Юникод Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:44 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Изопропилкомпозитные символы не имеет никакого отношения к кодировкеНу в таком случае имеем право работать с строкой в UTF-16 как с массивом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:46 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
maytonПри сравнении через Collator с указанием особенностей страны + языка все чики-пикиТолько это не из-за мифических пузырьков UTF-16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:47 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Ну в таком случае имеем право работать с строкой в UTF-16 как с массивом.Имеете. Только лажать будете. А если не будете - код получится ничуть не проще и ничуть не эффективнее, чем при работе со строками как с массивом байт в кодировке UTF-8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:49 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
кодовая точка U+1F682 STEAM LOCOMOTIVE 🚂 в разных кодировках: Код: plaintext 1. 2. в случае (U+0451) и (U+0435) (U+0308) - представление Ё различно при использовании ОДНОЙ кодировки Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:51 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovmaytonПри сравнении через Collator с указанием особенностей страны + языка все чики-пикиТолько это не из-за мифических пузырьков UTF-16. Вася. Как часто в своей практике ты встречал букву Ё закодированную т.н. кодовыми точками или двумя символами UTF-16 ? Только по чесноку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 20:55 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Изопропилкомпозитные символы не имеет никакого отношения к кодировкеНу в таком случае имеем право работать с строкой в UTF-16 как с массивом. как паровозик в UTF-8 перекодируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 21:02 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
maytonТолько по чесноку.В "старых" маках использовалась максимальная декомпозиция. Как в новых - не знаю. У меня нет и не было ни старого, ни нового. Только что это меняет? Хотя ... Есть встречный вопрос - вам часто приходилось "врукопашную" строки сравнивать? А почему тогда вы так уверены, что UTF-16 круче, чем крутые яйца? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 21:04 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
maytonзакодированную т.н. кодовыми точками или двумя символами UTF-16 ?И, кстати, опять эта типичная ошибка. Кодовые точки они тоже от кодировки не зависят - это просто числа. И "широкое" представление "cyrylic letter yo" это два кода и один символ даже в UTF-16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 21:07 |
|
||
|
Куда катится C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovИмеете. Только лажать будете. А если не будете - код получится ничуть не проще и ничуть не эффективнее, чем при работе со строками как с массивом байт в кодировке UTF-8.Давно присматривался к http://site.icu-project.org/, но пока не использовал. 1C 8.x использует. Далее сказанное к 1С отношения не имеет. Все используют library ICU [spoiler] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2016, 21:09 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39303229&tid=2018431]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
91ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 198ms |

| 0 / 0 |
