Arlleex 209 29 октября Опубликовано 29 октября · Жалоба 2 часа назад, jcxz сказал: Почему? if ((s32)(j = (s8)c) < 0) { Какие из символов Unicode А...я пройдут через это условие? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 253 29 октября Опубликовано 29 октября · Жалоба 1 час назад, Arlleex сказал: if ((s32)(j = (s8)c) < 0) { Какие из символов Unicode А...я пройдут через это условие? Да, опять я думал про UTF-8, у которого все расширенные коды имеют установленный 7-й бит в первом байте. Конечно же для UTF-16 заменить на простое: if ((j = c) >= 128) { Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 253 31 октября Опубликовано 31 октября · Жалоба Кстати: И эта функция по большому счёту - неверная. Да и ваша: тоже. Так как в UTF-16 один символ может кодироваться не обязательно одним словом. Ни та ни другая это не учитывают. Именно поэтому всегда предпочитаю UTF-8. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 209 31 октября Опубликовано 31 октября · Жалоба 2 часа назад, jcxz сказал: Кстати: И эта функция по большому счёту - неверная. Да и ваша: тоже. Так как в UTF-16 один символ может кодироваться не обязательно одним словом. Ни та ни другая это не учитывают. Именно поэтому всегда предпочитаю UTF-8. Почему моя не верная? Длинные коды (32-битные) представляются суррогатными парами, которые обе находятся в определенных диапазонах. Эти диапазоны моим алгоритмом не обрабатываются, поэтому такие символы будут просто пропущены. Чего мне и достаточно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 253 31 октября Опубликовано 31 октября · Жалоба 1 час назад, Arlleex сказал: Эти диапазоны моим алгоритмом не обрабатываются, поэтому такие символы будут просто пропущены. Чего мне и достаточно. Ну хорошо, с длинным - ок. Но остаётся ещё порядок байт. Который переключается специальным управляющим символом = U+FEFF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 209 31 октября Опубликовано 31 октября · Жалоба Я полагаю, это формат UTF + BOM, у нас строго без BOM. Фактически, программист удаленной железки оперирует только строкой, никаких текстовых файлов не шлется. Ну и мы договорились о стандартном little endian. По крайней мере, у нас утвержден такой порядок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться