![]() |
|
Модераторы: bsa |
![]()
|
|
| GQU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 13.2.2011 Репутация: нет Всего: нет |
Как с помощью кода отличить ANSI от utf-8?
Это сообщение отредактировал(а) GQU - 4.11.2015, 10:04 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Только по статистическим расчетам при наличии длинного текста. По хорошему везде должно указываться какая кодировка. Например такой текст "dfhdfherheh" идентичен в ANSI и UTF8.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
В utf-8 многоа запрещенных комбинаций, можно по ним определить, что это не utf-8.
Если в utf-8 только русский (ну и английский), то определить достаточно просто, если текст хотябы больше 3 букв. я когда-то писал програмку для коррекции неправильной кодировки для IRC-бота. (он никогда не ошибался). Правда искусственно можно подобрать комбинации являющиеся валидными в той и другой кодировке например: РёРё == ии Это сообщение отредактировал(а) volatile - 4.11.2015, 12:04 |
|||
|
||||
| leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
Прикрутить enca http://cihar.com/software/enca/
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| Andrey Bushman |
|
|||
|
Unregistered |
В WinAPI для этого существует функция IsTextUnicode. Она анализирует текст по различным алгоритмам. Чем больше фрагмент анализируемого текста и чем больше вариантов проверки требует программист - тем больше шансов получить корректный результат. Однако сто процентного способа, гарантированно определяющего кодировку (ANSI или Unicode) не существует.
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| GQU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 13.2.2011 Репутация: нет Всего: нет |
как? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
В utf8 есть символы, кодируемые 1 , 2 и 3 байтами
С 1 байт - коды в диапазоны 0-127 Есть коды, начинающие символ, кодируемый 2 байтами, и есть коды, начинающие символ, кодируемый 3 байтами. Есть коды для второго и третьего байта. Если код для первого байта встречается без кода второго байта (или без третьего, для трехбайтовой последовательности) или код для второго байта без первого - это не utf8. |
|||
|
||||
| GQU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 13.2.2011 Репутация: нет Всего: нет |
Написал в notepad++
чудеса в кодировке win1251 почему ставлю кодировать в ut8 без bom и нормально читает, почему нет крякозябликов? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Если сохраняешь с bom в начало файла дописываются 3 байта, читаемые как один символ Unicode FEFF
идентифицирующий что файл в utf8. Его нужно пропускать. |
|||
|
||||
| GQU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 13.2.2011 Репутация: нет Всего: нет |
это я знаю, я же не это спросил Это сообщение отредактировал(а) GQU - 16.11.2015, 15:32 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |