Перейти к содержанию
    

Преобразовать UTF-16 в CP-866

2 часа назад, jcxz сказал:

Почему?

if ((s32)(j = (s8)c) < 0) {

Какие из символов Unicode А...я пройдут через это условие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Arlleex сказал:
if ((s32)(j = (s8)c) < 0) {

Какие из символов Unicode А...я пройдут через это условие?

Да, опять я думал про UTF-8, у которого все расширенные коды имеют установленный 7-й бит в первом байте.

Конечно же для UTF-16 заменить на простое: if ((j = c) >= 128) {

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати: И эта функция по большому счёту - неверная. Да и ваша: 

тоже. Так как в UTF-16 один символ может кодироваться не обязательно одним словом. Ни та ни другая это не учитывают.

Именно поэтому всегда предпочитаю UTF-8.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, jcxz сказал:

Кстати: И эта функция по большому счёту - неверная. Да и ваша: 

тоже. Так как в UTF-16 один символ может кодироваться не обязательно одним словом. Ни та ни другая это не учитывают.

Именно поэтому всегда предпочитаю UTF-8.

Почему моя не верная? Длинные коды (32-битные) представляются суррогатными парами, которые обе находятся в определенных диапазонах. Эти диапазоны моим алгоритмом не обрабатываются, поэтому такие символы будут просто пропущены. Чего мне и достаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Arlleex сказал:

Эти диапазоны моим алгоритмом не обрабатываются, поэтому такие символы будут просто пропущены. Чего мне и достаточно.

Ну хорошо, с длинным - ок. Но остаётся ещё порядок байт. Который переключается специальным управляющим символом = U+FEFF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я полагаю, это формат UTF + BOM, у нас строго без BOM. Фактически, программист удаленной железки оперирует только строкой, никаких текстовых файлов не шлется. Ну и мы договорились о стандартном little endian. По крайней мере, у нас утвержден такой порядок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...