Различные кодировки символов в одном файле
Добрый день. Подскажите пожалуйста.
Есть текстовый файл в котором текстовая информация (кирилица) представлена в 2х разных кодировках. Текстовые редакторы, такие как Notepad++ и UltraEdit отображают текст правильно (то есть, они своими "мозгами" понимают, что текст представлен в различных кодировках), но при попытке сохранить файл в конкретной (одной) кодировке они выполняю преобразование не верно. Вопрос в следующем. Есть ли (не важно у какого языка программирования) готовый инструментарий (функция к примеру) с помощью которого можно выполнить правильное преобразование. Или может кто предложет примерный "алгорит" преобразования. Или возможно существуют приложения умеющие выполнять подобные преобразования. :) |
1. wordpad умеет (открываешь как текст dos, сохраняешь как ansi)
2. есть функции OemToCharBuff и CharToOemBuff 3. алгоритм: в досе символы с кодами >127 сосредоточены в диапазоне кодов 128-175 и 224-239, остальное - пунктуация; в виндоус в диапазоне 192-255. На этом примере строим научно-обоснованный алгоритм. Берём повесть о войне и мире, считаем статистику по символам. Открываем wordpad-ом, сохраняем в DOS, считаем статистику (Она будет такой же, только в другом порядке). Теперь открываем неизвестный файл, считаем статистику. По любой норме (лучше L2 - евклидова) считаем расстояние полученного 256-мерного вектора до двух эталонных. Какое меньше - та кодировка и есть. |
Цитата:
вот пример (обе строки находятся в одном и том же файле): Стандартные изделия Ñòàíäàðòíûå èçäåëèÿ Цитата:
[in] Pointer to a buffer containing one or more characters from the OEM-defined character set. Определённого типа!!! А вопрос как раз в том, что я не знаю как отличить какой байт в файле к какой кодировке относится. |
Цитата:
В UTF-8 и обратно можно перевести блокнотом. Если нужен алгоритм, он есть в каком-то из постов на форуме, сделай поиск. Функции OemToCharBuff и CharToOemBuff были приведены к фразе: Цитата:
|
Время: 12:55. |
Время: 12:55.
© OSzone.net 2001-