Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Различные кодировки символов в одном файле

Ответить
Настройки темы
Разное - Различные кодировки символов в одном файле

Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Добрый день. Подскажите пожалуйста.
Есть текстовый файл в котором текстовая информация (кирилица) представлена в 2х разных кодировках. Текстовые редакторы, такие как Notepad++ и UltraEdit отображают текст правильно (то есть, они своими "мозгами" понимают, что текст представлен в различных кодировках), но при попытке сохранить файл в конкретной (одной) кодировке они выполняю преобразование не верно.
Вопрос в следующем. Есть ли (не важно у какого языка программирования) готовый инструментарий (функция к примеру) с помощью которого можно выполнить правильное преобразование. Или может кто предложет примерный "алгорит" преобразования. Или возможно существуют приложения умеющие выполнять подобные преобразования.

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 14:14, 19-05-2009

 
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


1. wordpad умеет (открываешь как текст dos, сохраняешь как ansi)
2. есть функции OemToCharBuff и CharToOemBuff
3. алгоритм: в досе символы с кодами >127 сосредоточены в диапазоне кодов 128-175 и 224-239, остальное - пунктуация; в виндоус в диапазоне 192-255.
На этом примере строим научно-обоснованный алгоритм. Берём повесть о войне и мире, считаем статистику по символам. Открываем wordpad-ом, сохраняем в DOS, считаем статистику (Она будет такой же, только в другом порядке). Теперь открываем неизвестный файл, считаем статистику. По любой норме (лучше L2 - евклидова) считаем расстояние полученного 256-мерного вектора до двух эталонных. Какое меньше - та кодировка и есть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:06, 20-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Цитата pva:
1. wordpad умеет (открываешь как текст dos, сохраняешь как ansi) »
Забыл уточнить. Кодировки: windows-1251 и utf-8.

вот пример (обе строки находятся в одном и том же файле):

Стандартные изделия
Ñòàíäàðòíûå èçäåëèÿ


Цитата pva:
2. есть функции OemToCharBuff и CharToOemBuff »
http://msdn.microsoft.com/ru-ru/libr...s,VS.85).aspx:
[in] Pointer to a buffer containing one or more characters from the OEM-defined character set.
Определённого типа!!! А вопрос как раз в том, что я не знаю как отличить какой байт в файле к какой кодировке относится.

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Последний раз редактировалось EvgeniyQQQ, 20-05-2009 в 18:04.


Отправлено: 15:11, 20-05-2009 | #3

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Цитата EvgeniyQQQ:
Стандартные изделия
Ñòàíäàðòíûå èçäåëèÿ »
Это не UTF-8, это стандартный глюк, пришедший со времён windows 3.11, когда перевод в уникод делается не функцией AnsiCharToMultibyte с правильной кодировкой, а просто превращением (reinterpret_cast) однобайтного кода символа в 2-байтный добавлением нулевого старшего байта.
В UTF-8 и обратно можно перевести блокнотом. Если нужен алгоритм, он есть в каком-то из постов на форуме, сделай поиск.
Функции OemToCharBuff и CharToOemBuff были приведены к фразе:
Цитата EvgeniyQQQ:
Есть ли (не важно у какого языка программирования) готовый инструментарий (функция к примеру) с помощью которого можно выполнить правильное преобразование »
Отличить UTF-8 от остальных кодировок можно всё тем же способом статистического разделения (по наименьшему расстоянию). Там для русского языка будет один-два наиболее часто встречающихся символа.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:49, 21-05-2009 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Различные кодировки символов в одном файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Форма и обработчик в одном файле VladZombie Вебмастеру 1 10-12-2009 16:37
Как сделать треков в одном файле CD PLUS BillGates_XP Видео и аудио: обработка и кодирование 2 30-09-2009 10:04
Как подружить различные ОСи на одном/двух винтах? iomhar Новости и флейм из мира *nix 1 05-02-2007 12:41
SSI и PHP в одном файле E-mail Вебмастеру 21 21-11-2005 02:40
Фильм с меню в одном файле. Skaarj Видео и аудио: обработка и кодирование 4 21-06-2005 13:51




 
Переход