![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перекодировка русского текста DOS+ANSI в ANSI [D7, XP, 2003]
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