Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перекодировка русского текста DOS+ANSI в ANSI [D7, XP, 2003]


Страницы:   1 2

allrussia ©   (2010-03-03 08:48:00) 

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

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


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

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

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

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


а нужно

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


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

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


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


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


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

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


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

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


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

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

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


Anatoly Podgoretsky   (2010-03-04 09:08:00) [4]

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

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


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

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

может и выдает в 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


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


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

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


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

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


allrussia   (2010-03-03 23:33:00) [8]

oldman

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

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

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


oldman   (2010-03-03 20:45:00) [9]


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


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


Anatoly Podgoretsky   (2010-03-03 18:40:00) [10]

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


allrussia   (2010-03-03 17:56:00) [11]

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


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

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


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

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

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


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

QAZ

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


QAZ   (2010-03-03 11:19:00) [15]

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


allrussia   (2010-03-03 10:35:00) [16]

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


12   (2010-03-03 10:24:00) [17]


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


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

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


Anatoly Podgoretsky   (2010-03-03 10:20:00) [18]

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

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


allrussia   (2010-03-03 10:15:00) [19]

2 12

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

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

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

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

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

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

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


allrussia   (2010-03-03 10:11:00) [20]

добавлю:

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

#113#195#195#195#113

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо