Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Перекодировка русского текста DOS+ANSI в ANSI   Найти похожие ветки 

 
allrussia   (2010-03-03 08:48) [0]

Есть данные с  русскими символами DOS и ANSI
например:

‘ЇЁб®Є Ё­вҐа䥩ᮢ
Минипорт


Данные динамически меняются

Если применять к данным функцию OEMtoANSI (и подобные)
то ANSI-символы портятся, а DOS-символы конвертируются нормально.

т.е. получается в данном примере что -то типа

Список интерфейсов
¦шэшяюЁЄ


а нужно

Список интерфейсов
Минипорт


Что же делать? (с) Ч.

Есть идея переконвертировать весь текст в ASCii -символы
типа #156
а затем в зависимости от символа конвертировать в ANSI
но как реализовать не знаю
Может кто подскажет. Спасибо.
p.s.перерыл все факи.


 
Anatoly Podgoretsky ©   (2010-03-03 08:54) [1]

> allrussia  (03.03.2010 08:48:00)  [0]

Операция перекодирования в ASCII обратная по отношению, к сильно устаревшей фунции OEMtoANSI
Синтаксис вызова одинаков.


 
allrussia   (2010-03-03 10:02) [2]

Не совсем понял, что вы имеете ввиду. Поясните.
Заодно я упрощу задачу.

есть текстовый файл с таким содержанием:

жжжжж  

Вроде все буквы одинаковые, а-н нет. какие то из них в дос кодировке, какие-то в ansi

вот и нужно определить какие из них dos, чтобы применить к ним oemtochar, например

вопрос как определить

т.е. допустим в нашем примере что 1 и 5 буквы в дос кодировке применяем oemtochar к ним - получаем

цжжжц Как узнать какие в дос-кодировке, если они все ожинаковые? :)))))))


 
12 ©   (2010-03-03 10:08) [3]

не правильно
У тя же построчно, а не побуквенно
нет же смеси из разных кодировок в одной строке?

наверное, нужен словарь
Искать результат слов в словаре. Если есть - правильно кодировку применили, нет - другую надо. Опять нет - третью..


 
Anatoly Podgoretsky ©   (2010-03-03 10:09) [4]

Методом частотного анализа, при известном языке это частично возможно.


 
allrussia   (2010-03-03 10:11) [5]

добавлю:

я теоретически понимаю
что мне необходимо добиться сначала получения такой строки типа

#113#195#195#195#113

а потом зная что #195-тые относятся к одному массиву таблицы символов
конвертировать #113-тые в соотвествующие значения  другой таблицы символов

получив на выходе #195#195#195#195#195


 
allrussia   (2010-03-03 10:15) [6]

2 12

нет же смеси из разных кодировок в одной строке?

есть!!! читайте примеры

например как вы думаете на каком языке это написано:

caHeK  и вот это саНеК

чувствуете разницу? вот мне и надо добиться конкретного определения  конкрентого символа

2 Anatoly Podgoretsky
Методом частотного анализа, при известном языке это частично возможно.

Мне нужен только русский язык


 
Anatoly Podgoretsky ©   (2010-03-03 10:20) [7]

> allrussia  (03.03.2010 10:15:06)  [6]

А без разницы какой тебе язык нужен.


 
12 ©   (2010-03-03 10:24) [8]


> ‘ЇЁб®Є Ё­вҐа䥩ᮢ
> Минипорт
>
> Данные динамически меняются
>
> Если применять к данным функцию OEMtoANSI (и подобные)
> то ANSI-символы портятся, а DOS-символы конвертируются нормально.
>
>
> т.е. получается в данном примере что -то типа
>
> Список интерфейсов
> ¦шэшяюЁЄ
>
>
> а нужно
>
> Список интерфейсов
> Минипорт


‘ЇЁб®Є Ё­вҐа䥩ᮢ - одна строка
Минипорт - ДРУГАЯ строка

вариант 2. Отвязаться не заморачиваясь.
Посмотреть на программы бред/штирлиц и помучить их на вопрос командной строки


 
allrussia   (2010-03-03 10:35) [9]

Анатолий, может подскажете как это реализовать и возможно ли это?
Построчно мне уже удалось это сделать с помощью проверки строки на принадлежнойсть той или иной кодировке. А вот посимвольно нет.
И вообще, объясните, пожалуйста, механизм преобразования
OEM > ASCII > ANSI. Спасибо.


 
QAZ   (2010-03-03 11:19) [10]

т.к. DOS и ANSI это таблици по 256 однобайтовых символом различающиеся индексами нелатинских символов
то преобразование\определение любыми стандартными функциями смешаной строки невозможно


 
allrussia   (2010-03-03 11:31) [11]

QAZ

возможно ли это вообще?


 
Anatoly Podgoretsky ©   (2010-03-03 12:06) [12]

> allrussia  (03.03.2010 11:31:11)  [11]

Возможно и не сложно, кроме определения языка


 
QAZ   (2010-03-03 12:38) [13]

проблем в том что диапазоны русских символов в DOS и ANSI пересекаюца


 
allrussia   (2010-03-03 17:56) [14]

значит, я ошибочно полагал что oem-символ и ansi-символ
даже если они визуально одинаковы для пользователя,
имеют разные значения в таблицах символов?
ну например одна и та же буква "ж" в разных кодировках в дос - 0xC8 и в анси - 0xD2.


 
Anatoly Podgoretsky ©   (2010-03-03 18:40) [15]

Они имеют разные значения


 
oldman ©   (2010-03-03 20:45) [16]


> Есть данные с  русскими символами DOS и ANSI
> например:
>
> ‘ЇЁб®Є Ё­вҐа䥩ᮢ
> Минипорт


Убить поставщика данных!
медленно и наслаждением!!!


 
allrussia   (2010-03-03 23:33) [17]

oldman

поставщик данных Microsoft - программа route.exe (TCP/IP Route Command) для русской WinXP SP2

Anatoly Podgoretsky
Они имеют разные значения

Ну, мне это не помогает: пока никто не озвучил никакого решения, даже намека.


 
Игорь Шевченко ©   (2010-03-04 00:29) [18]

Вот странно - а мне route все в одной кодировке выдает, а именно, в OEM


 
Германн ©   (2010-03-04 02:31) [19]


> Игорь Шевченко ©   (04.03.10 00:29) [18]
>
> Вот странно - а мне route все в одной кодировке выдает,
> а именно, в OEM
>

Может не умеешь её готовить? :)


 
allrussia   (2010-03-04 02:49) [20]

Игорь Шевченко

может и выдает в OEM но выглядит это вот так

========================================================================== =
‘ЇЁб®Є Ё­вҐа䥩ᮢ
0x1 ........................... MS TCP Loopback interface
0x2 ...00 0c 29 e3 6c ab ...... AMD PCNET с
0x3емейство PCI Ethernet адапте
0x4ров - Минипорт планировщика пакетов
===========================================================================
===========================================================================
ЂЄвЁў­лҐ ¬ аиагвл:
‘ҐвҐў®©  ¤аҐб           Њ бЄ  бҐвЁ      Ђ¤аҐб и«о§        €­вҐадҐ©б  ЊҐваЁЄ 
       127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1   1
     192.168.1.0    255.255.255.0    192.168.1.220   192.168.1.220   30
   192.168.1.220  255.255.255.255        127.0.0.1       127.0.0.1   30
   192.168.1.255  255.255.255.255    192.168.1.220   192.168.1.220   30
       224.0.0.0        240.0.0.0    192.168.1.220   192.168.1.220   30
 255.255.255.255  255.255.255.255    192.168.1.220   192.168.1.220   1
===========================================================================
Џ®бв®п­­лҐ ¬ аиагвл:
 ЋвбгвбвўгҐв


а после OEMtoANSI

===========================================================================
Список интерфейсов
0x1 ........................... MS TCP Loopback interface
0x20004 ...00 0c 29 e3 6c b5 ...... AMD PCNET ёхьхщёЄтю PCI Ethernet рфряЄхЁют #2
0x40002 ...00 0c 29 e3 6c ab ...... AMD PCNET ёхьхщёЄтю PCI Ethernet рфряЄхЁют
0x50005 ...00 0c 29 e3 6c bf ...... AMD PCNET ёхьхщёЄтю PCI Ethernet рфряЄхЁют #3
===========================================================================
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
       127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1   1
     192.168.1.0    255.255.255.0    192.168.1.220   192.168.1.220   30
     192.168.1.0    255.255.255.0    192.168.1.221   192.168.1.221   30
   192.168.1.220  255.255.255.255        127.0.0.1       127.0.0.1   30
   192.168.1.221  255.255.255.255        127.0.0.1       127.0.0.1   30
   192.168.1.255  255.255.255.255    192.168.1.220   192.168.1.220   30
   192.168.1.255  255.255.255.255    192.168.1.221   192.168.1.221   30
    192.168.12.0    255.255.255.0     192.168.12.1    192.168.12.1   30
    192.168.12.1  255.255.255.255        127.0.0.1       127.0.0.1   30
  192.168.12.255  255.255.255.255     192.168.12.1    192.168.12.1   30
       224.0.0.0        240.0.0.0    192.168.1.220   192.168.1.220   30
       224.0.0.0        240.0.0.0    192.168.1.221   192.168.1.221   30
       224.0.0.0        240.0.0.0     192.168.12.1    192.168.12.1   30
 255.255.255.255  255.255.255.255    192.168.1.220   192.168.1.220   1
 255.255.255.255  255.255.255.255    192.168.1.221   192.168.1.221   1
 255.255.255.255  255.255.255.255     192.168.12.1    192.168.12.1   1
===========================================================================
Постоянные маршруты:
 Отсутствует


for example


 
Anatoly Podgoretsky ©   (2010-03-04 09:08) [21]

> allrussia  (04.03.2010 02:49:20)  [20]

Странно другое, то что содержимое разное, где то лапшу нам вешают.


 
Игорь Шевченко ©   (2010-03-04 11:21) [22]

Действительно, в случае русских названий интерфейсов route их выводит в кодировке Ansi, а свой текст - в OEM.
Подтверждаю.

Автор, а зачем ты мучаешься с route ? Не проще ли обратиться напрямую к нужным фукнциям ?


 
allrussia   (2010-03-04 23:54) [23]

Игорь Шевченко
по принципу безопасности: если есть проблема с одной программой, то возможны проблемы с другими подобными.
проблема решена проверкой строк на принадлежность к кодировке
но это не идеал
хотелось бы посимвольно


 
Игорь Шевченко ©   (2010-03-05 03:18) [24]


> по принципу безопасности: если есть проблема с одной программой,
>  то возможны проблемы с другими подобными.


Проблемы возможны с любой программой, на каждый чих универсального решения не напасешься. Если тебе нужно обрабатывать данные маршрутизации, не пользуйся выводом программы route, а обращайся напрямую к соответствуюшему API (как собственно route и делает). А строить искусственный интеллект по переводу вывода произвольной программы в смешанных кодировках - пустая и бессмысленная затея.

Кодировки OEM и ANSI пересекаются, в одних и тех же позициях находятся вполне осмысленные буквы. Только разные.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.059 c
2-1271304861
not_134
2010-04-15 08:14
2010.08.27
фильтрация по двум полям


9-1188170421
Jkot
2007-08-27 03:20
2010.08.27
Генеация текстурных координат.


2-1271803089
GalarG
2010-04-21 02:38
2010.08.27
свзь с базой в Access


15-1272037354
D23
2010-04-23 19:42
2010.08.27
Начать изучение Delphi


2-1270520076
Delphist2
2010-04-06 06:14
2010.08.27
как отменить выполнение обработчика?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский