Arlleex 207 October 29 Posted October 29 · Report post 2 часа назад, jcxz сказал: Почему? if ((s32)(j = (s8)c) < 0) { Какие из символов Unicode А...я пройдут через это условие? Quote Share this post Link to post Share on other sites More sharing options...
jcxz 251 October 29 Posted October 29 · Report post 1 час назад, Arlleex сказал: if ((s32)(j = (s8)c) < 0) { Какие из символов Unicode А...я пройдут через это условие? Да, опять я думал про UTF-8, у которого все расширенные коды имеют установленный 7-й бит в первом байте. Конечно же для UTF-16 заменить на простое: if ((j = c) >= 128) { Quote Share this post Link to post Share on other sites More sharing options...
jcxz 251 October 31 Posted October 31 · Report post Кстати: И эта функция по большому счёту - неверная. Да и ваша: тоже. Так как в UTF-16 один символ может кодироваться не обязательно одним словом. Ни та ни другая это не учитывают. Именно поэтому всегда предпочитаю UTF-8. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 207 October 31 Posted October 31 · Report post 2 часа назад, jcxz сказал: Кстати: И эта функция по большому счёту - неверная. Да и ваша: тоже. Так как в UTF-16 один символ может кодироваться не обязательно одним словом. Ни та ни другая это не учитывают. Именно поэтому всегда предпочитаю UTF-8. Почему моя не верная? Длинные коды (32-битные) представляются суррогатными парами, которые обе находятся в определенных диапазонах. Эти диапазоны моим алгоритмом не обрабатываются, поэтому такие символы будут просто пропущены. Чего мне и достаточно. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 251 October 31 Posted October 31 · Report post 1 час назад, Arlleex сказал: Эти диапазоны моим алгоритмом не обрабатываются, поэтому такие символы будут просто пропущены. Чего мне и достаточно. Ну хорошо, с длинным - ок. Но остаётся ещё порядок байт. Который переключается специальным управляющим символом = U+FEFF. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 207 October 31 Posted October 31 · Report post Я полагаю, это формат UTF + BOM, у нас строго без BOM. Фактически, программист удаленной железки оперирует только строкой, никаких текстовых файлов не шлется. Ну и мы договорились о стандартном little endian. По крайней мере, у нас утвержден такой порядок. Quote Share this post Link to post Share on other sites More sharing options...