Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 074

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Появилась срочная необходимость перевести большое количество файлов из одной кодировки в другую (а именно ANSI TO UTF8). С преобразованием проблем нет, а вот как определить кодировку у текста, чтобы не перекодировать в его в Unicode 2 раза (чушь получается)? Можно урезать вопрос до того, что как различить ANSI и UTF8 программно?

Виталий Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Виталий (статус: 2-ой класс)
Вопрос отправлен: 7 августа 2009, 21:32
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Виталий!
Если файлы были перекодированы в UTF-8 корректно, то распознать можно. Это делается по так называемой BOM сигнатуре. Это три байта в начале - EF BB BF. Если в тексте есть только символы с кодами до 127 включительно и сигнатуры нет, то UTF8 от ANSI (cp1251) отличить нельзя - они идентичны...
Если же есть кирилические символы, то тут лучше пойти на хитрость - проанализировать входной поток и посмотреть, что там. Если это кирилический текст, то там будет много символов с кодами 0xD0, 0xD1 в диапазоне от 128 до 255. Если это это анси, то там будет много кодов 0xE0 и 0xEE (это буквы а и о, которые наиболее распростанненные в русской языке)

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 8 августа 2009, 00:40
Оценка за ответ: 5

Комментарий к оценке: Спасибо! Я нашёл функцию на этом алгоритме.

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:27
Выполнено за 0.03 сек.