Войти

Показать полную графическую версию : [решено] Проблема с chcp 65001 (utf-8) в батнике


volk1234
06-10-2009, 15:04
Собственно сабж.

Если надо из батника создать текстовый файл в формате Юникод utf-8 - выполнение батника под ХР прекражается на команде

chcp 65001

можно ли это обойти ?

Надо для создания коментария к 7zip sfx архиву....

gora
06-10-2009, 15:42
Из справки по этой команде:Поддерживаемые кодовые таблицы с соответствующими странами/регионами или языками приведены в следующей таблице.
Кодовая страница Страна/регион или язык
437 США
850 Многоязыковый (латиница I)
852 Восточная и центральная Европа (латиница II)
855 Кириллица (русский)
857 Турецкий
860 Португальский
861 Исландский
863 Французский (Канада)
865 Скандинавский
866 Русский
869 Современный греческий
Почему здесь нет 1251, не скажу, но 65001 здесь, как видим, отсутствует.
Обойти проблему с файлом конфигурации можно.
- использовать только латиницу и создавать файл в 1251 кодировке. Для модуля пойдет вместо UTF-8.
- использовать только латиницу в 1251 кодировке и не создавать файл заново, а дописывать заготовку файла созданного заранее в кодировке UTF-8 с сигнатурой. Тогда получится полноценный файл конфигурации в кодировке UTF-8 с сигнатурой.

При наличии кириллицы проблему тоже можно решить, но более изощренными средствами с использованием "склеивания файлов", но это уже под конкретную задачу.

volk1234
06-10-2009, 16:02
На самом деле еще подходят некоторые кодовые страницы отсюда :
http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx

Но в бат файле не работают...
Спасибо за информацию.

amel27
06-10-2009, 17:06
самое забавное, что работает, =) ...хотя в латинице всё одно:
@Echo On

Set CFG=config.txt

Set LN1=;!@Install@!UTF-8!
Set LN2=;Это для проверки.
Set LN3=RunProgram="StartX.exe /WAIT \"msiexec /i Adobe7.msi /qn\""
Set LN4=;!@InstallEnd@!

CHCP 65001|1>%CFG% Echo %LN1%&CHCP 866
CHCP 65001|>>%CFG% Echo %LN2%&CHCP 866
CHCP 65001|>>%CFG% Echo %LN3%&CHCP 866
CHCP 65001|>>%CFG% Echo %LN4%&CHCP 866




© OSzone.net 2001-2012