![]() |
ANSI<->ASCII
Подскажите, пожалуйста, как можно командной строкой конвертировать текстовой файл из dos кодировки в windows?
|
UPDATE: решение найдено, см. ниже.
К сожалению, командной строкой я не смог. Никак*. Проблема в том, что даже смена кодовой страницы (командами mode con cp select=XXX или chcp XXX) не может повлиять на результаты команд type или echo**, поскольку они внутри себя явно заточены на использование дефолтной 866-й страницы (и весь вывод пропускают через CharToOem()-функцию). Это можете проверить, можете поверить на слово. Вариантами решения могут быть: 1. Использование сторонних перекодировщиков (я использовал recode), есть масса других консольных утилит. 2. Написание своего перекодировщика (см. тут что-то вроде образца). ___ * В принципе, может кто и сможет это сделать. Но тогда как объяснить вот такое поведение cmd.exe: Код:
Microsoft Windows XP [Версия 5.1.2600] ** Сначала я ляпнул про echo, но вообще-то она тут не при чём, конечно (ей что дали, то она и вывела). Другое дело, что её использовать тоже не получится. Пример: Файл 1.bat, кодировка ДОСа: Код:
chcp 1251 Код:
C:\Documents and Settings\hasherfrog>1.bat |
Неуверен но можт так:
text.bat Код:
type text1.txt>>text2.txt Код:
cmd.exe /u /c text.bat Получается на входе text1.txt: Код:
йцукен Код:
щЎєъхэ |
ven00m, не совсем так (/u даст юникод, а не window-кодировку), но идея правильная.
Решение вот такое, текст файла typea.bat Код:
@if "%1"=="" goto error |
Спасибо, hasherfrog!
только вот что-то под xp не работает из дос в win кодировку. перенаправил вывод в файл, а он как был, так и остался... |
akrav, вот с перенаправлением нужно подумать. Вы обратите внимание на код. Мне кажется, в виде конвейера или перенаправления не получится использовать отдельный (приведённый выше) батник, вместо этого Вам надо его код переделать (встроиться туда, где @type ___tmptxt).
|
Очень интересно! Однако пока с полезным результатом напряженка. Ни туда, ни обратно конвертации не происходит, что можно пронаблюдать в файле ___tmptxt, который насколько я понял создается перенаправление вывода.
|
Время: 06:11. |
Время: 06:11.
© OSzone.net 2001-