Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как оличить utf-8 от ascii 
:(
    Опции темы
GQU
Дата 4.11.2015, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Как с помощью кода отличить ANSI от utf-8?

Это сообщение отредактировал(а) GQU - 4.11.2015, 10:04
PM MAIL   Вверх
Alexeis
Дата 4.11.2015, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Только по статистическим расчетам при наличии длинного текста. По хорошему везде должно указываться какая кодировка. Например такой текст "dfhdfherheh" идентичен в ANSI и UTF8. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
volatile
Дата 4.11.2015, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



В utf-8 многоа запрещенных комбинаций, можно по ним определить, что это не utf-8.

Если в utf-8 только русский (ну и английский), то определить достаточно просто, если текст хотябы больше 3 букв.
я когда-то писал програмку для коррекции неправильной кодировки для IRC-бота. (он никогда не ошибался).

Правда искусственно можно подобрать комбинации являющиеся валидными в той и другой кодировке
например:
РёРё == ии


Это сообщение отредактировал(а) volatile - 4.11.2015, 12:04
PM MAIL   Вверх
leniviy
Дата 5.11.2015, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



Прикрутить enca http://cihar.com/software/enca/

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Andrey Bushman
Дата 5.11.2015, 11:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











В WinAPI для этого существует функция IsTextUnicode. Она анализирует текст по различным алгоритмам. Чем больше фрагмент анализируемого текста и чем больше вариантов проверки требует программист - тем больше шансов получить корректный результат. Однако сто процентного способа, гарантированно определяющего кодировку (ANSI или Unicode) не существует.

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
GQU
Дата 11.11.2015, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Цитата

Если в utf-8 только русский (ну и английский), то определить достаточно просто, если текст хотябы больше 3 букв.

как?
PM MAIL   Вверх
math64
Дата 11.11.2015, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



В utf8 есть символы, кодируемые 1 , 2 и 3 байтами
С 1 байт - коды в диапазоны 0-127
Есть коды, начинающие символ, кодируемый 2 байтами, и есть коды, начинающие символ, кодируемый 3 байтами.
Есть коды для второго и третьего байта.
Если код для первого байта встречается без кода второго байта (или без третьего, для трехбайтовой последовательности) или код для второго байта без первого - это не utf8.
PM   Вверх
GQU
Дата 14.11.2015, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Написал в notepad++
чудеса
в кодировке win1251
почему ставлю кодировать в ut8 без bom и нормально читает, почему нет крякозябликов?
PM MAIL   Вверх
math64
Дата 16.11.2015, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Если сохраняешь с bom в начало файла дописываются 3 байта, читаемые как один символ Unicode FEFF
идентифицирующий что файл в utf8. Его нужно пропускать. 
PM   Вверх
GQU
Дата 16.11.2015, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Цитата

Если сохраняешь с bom в начало файла дописываются 3 байта, читаемые как один символ Unicode FEFF
идентифицирующий что файл в utf8. Его нужно пропускать.  

это я знаю, я же не это спросил

Это сообщение отредактировал(а) GQU - 16.11.2015, 15:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.