Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Ошибка перекодировки русских символов

Ответить
Настройки темы
Любой язык - [решено] Ошибка перекодировки русских символов

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Из bat файла, создаю текстовый файл, в который вносится переменная содержащая русские символы. Программа которая использует этот файл, видимо пытается перекодировать его в US ASCII. Пишет вот такую ерунду:
Код: Выделить весь код
INFO: Locale=C
INFO: Converting filenames to US-ASCII
ERR:  Cannot convert UTF8 string
С какой-бы кодировкой я не создавал файл, получаю ошибку. Либо эту. Либо если создаю с его кодировкой, то вместо русских символов получаю ????.mpg
Прочитал про утилиту recode, надеялся с её помощью попробовать выкрутиться - но нигде ее не нашёл. На wiki пишут "видимо прекратили поддержку". По ссылке с wiki закачки нет.
Может ли кто нибудь подсказать мне, как мне выход из этой ситуации?

Отправлено: 09:07, 16-02-2010

 

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xml config.xml
(161 байт, 12 просмотров)

Код: Выделить весь код
rem set mx=mplex.exe -f 8 -o
set compl=dvdauthor 
rem set demuxfld=f:\demuxed
set remuxfld=f:\remuxed
set outptfld=f:\compling
rem for %%a in (%demuxfld%\*.mpv) do %mx% %remuxfld%\%%~na.mpg %demuxfld%\%%~na.mpv %demuxfld%\%%~na.mpa
for %%b in (%remuxfld%\*) do (
rem Echo ^<?xml version="1.0" encoding="US-ASCII"?^> >config.xml
ECHO ^<dvdauthor^> >config.xml
ECHO ^<vmgm /^> >>config.xml
ECHO ^<titleset^> >>config.xml
ECHO ^<titles^> >>config.xml
ECHO ^<pgc^> >>config.xml
CHCP 65001| >>config.xml ECHO ^^^<vob file="%%b" /^^^> &CHCP 866
rem ECHO ^<vob file="%%b" /^> >>config.xml
ECHO ^</pgc^> >>config.xml
ECHO ^</titles^> >>config.xml
ECHO ^</titleset^> >>config.xml
ECHO ^</dvdauthor^> >>config.xml
%compl% -o %%~nb -x config.xml
)
Так вроде бы всё верно?
Ответ:
Код: Выделить весь код
INFO: Locale=C
INFO: Converting filenames to US-ASCII
ERR:  Cannot convert UTF8 string 'Р-Р°С:Р°С?РчР?РєР?1_1.mpg': Invalid or incomplete multibyte or wide character
Файл скинул.
Дополнительно, попробовал деларировать кодировку xml US-ASCII(то что сейчас под ремаркой), получаю вот такое:
Код: Выделить весь код
config.xml:7: parser error : AttValue: ' expected
<vob file="f:\remuxed\
                      ^
config.xml:7: parser error : attributes construct error
<vob file="f:\remuxed\
                      ^
config.xml:7: parser error : Couldn't find end of Start Tag vob
<vob file="f:\remuxed\
                      ^
ERR:  Error in parsing XML
То есть видимо он её не перекодирует, но и не понимает... Не зря видать перекодировать пытается....
Самое интересное, что с русскими папками эта прога работает номально.

Отправлено: 11:47, 16-02-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


taravasya, похоже, dvdauthor работает только с английскими именами в XML-файле... так что - либо искать другую утилиту, либо придумывать алгоритм временного переименования файлов перед их обработкой

Отправлено: 13:14, 16-02-2010 | #12


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
похоже, dvdauthor работает только с английскими именами в XML-файле... »
Вот этого я и боялся.
Цитата amel27:
либо придумывать алгоритм временного переименования файлов перед их обработкой »
То-есть как бы я не извращался, "родного" имени всё равно не будет? Проблема в том, что видео складывается с нескольких компов, разными пользователями, с разным уровнем подготовки и усидчивости. А значит если кто-то из них забудет что по-русски называть нельзя - всё пойдёт на смарку....
А что на счёт recode? Вы не знаете как с ней работать? Я же её в принципе нашел... но что-то никак не разберусь с синтаксисом.

Отправлено: 13:40, 16-02-2010 | #13


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата taravasya:
То-есть как бы я не извращался, "родного" имени всё равно не будет? »
можно переименовать файл(ы), провести обработку и вернуть имя обратно

Цитата taravasya:
А что на счёт recode? »
а смысл?.. русский в любой кодировке останется русским, а программа по ходу работает только с английским
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:01, 16-02-2010 | #14


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата amel27:
можно переименовать файл(ы), провести обработку и вернуть имя обратно »
Вот это правильно, так и сделаем

Код: Выделить весь код
@echo off

set mx=mplex.exe -f 8 -o
set compl=dvdauthor 
set demuxfld=f:\demuxed
set remuxfld=f:\remuxed
set outptfld=f:\compling

call :xml

for %%a in (%demuxfld%\*.mpv) do %mx% "%remuxfld%\%%~na.mpg" "%demuxfld%\%%~na.mpv" "%demuxfld%\%%~na.mpa"
for %%b in (%remuxfld%\*.mpg) do (
ren "%%~fb" tempfile.mpg
start /wait %compl% -o tempfile.mpg -x config.xml
ren "%%~dpbtempfile.mpg" "%%~nb.mpg"
)
goto :eof

:xml
echo ^<dvdauthor^> >config.xml
echo ^<vmgm /^> >>config.xml
echo ^<titleset^> >>config.xml
echo ^<titles^> >>config.xml
echo ^<pgc^> >>config.xml
echo ^<vob file="tempfile.mpg" /^> >>config.xml
echo ^</pgc^> >>config.xml
echo ^</titles^> >>config.xml
echo ^</titleset^> >>config.xml
echo ^</dvdauthor^> >>config.xml
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:58, 16-02-2010 | #15


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


El Sanchez,
Что то видимо с goto не то? Исполнение проскакивает ремукс, создает xml файл где (<vob file="%b" />) ??? И уходит на запись. Писать нечего. И оно останавливается всё. Выкладываю текст всего проекта. Может я что-то натупил?

Код: Выделить весь код
rem Проверяем есть ли запланированное кодирование
IF EXIST f:\Work\jobesecl\job.ecl (
Call :ccenc
) ELSE (
Call :mkdvd
)

rem Вызываем CinemaCraft Encoder для выполнения задания
:ccenc
ccew -ecl f:\Work\jobesecl\job.ecl -batch

rem Авторинг

rem Приложения
:mkdvd
set mx=.\DVDauthor\mplex.exe -f 8 -o
set compl=.\DVDauthor\dvdauthor
set brnr="%programfiles%\Nero\Nero 9\Nero Express\NeroCmd.exe" --write --drivename g --iso photomir --DVD --dvdvideo_cmpt --create_iso_fs --create_udf_fs --iso-no-joliet --dvdvideo_realloc --recursive "f:\Work\compiled\
 
rem Папки
set demuxfld=f:\work\demuxed
set remuxfld=f:\work\remuxed
set outptfld=f:\work\compiled

call :xml

rem Ремуксинг
for %%a in (%demuxfld%\*.mpv) do %mx% %remuxfld%\%%~na.mpg %demuxfld%\%%~na.mpv %demuxfld%\%%~na.mpa

rem Компиляция DVD
for %%b in (%remuxfld%\*.mpg) do (
ren "%%~fb" tempfile.mpg
start /wait %compl% -o tempfile.mpg -x config.xml
ren "%%~dpbtempfile.mpg" "%%~nb.mpg"
)
goto :eof

:xml
ECHO ^<dvdauthor^> >config.xml
ECHO ^<vmgm /^> >>config.xml
ECHO ^<titleset^> >>config.xml
ECHO ^<titles^> >>config.xml
ECHO ^<pgc^> >>config.xml
ECHO ^<vob file="%%b" /^> >>config.xml
ECHO ^</pgc^> >>config.xml
ECHO ^</titles^> >>config.xml
ECHO ^</titleset^> >>config.xml
ECHO ^</dvdauthor^> >>config.xml


rem Очистка remux файлов
for %%c in (%remuxfld%\*) do (
Del %%c
)

rem Запись DVD-Video
rem for /D %%d in ("%outptfld%\*") do (
rem %brnr%%%~nd"
rem )
echo "КОНЕЦ"
Pause
Exit
Если есть критика - я жду. Как можно оптимизировать всё это. Подстраховаться на случай ошибок. Ну и конечно же надеюсь, что придумаем что-нибудь с русскими символами.

Отправлено: 20:03, 16-02-2010 | #16


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата taravasya:
Что то видимо с goto не то? Исполнение проскакивает ремукс, создает xml файл где (<vob file="%b" />) ??? И уходит на запись. Писать нечего »
taravasya, ну так как код вставили (причем с ошибками), так он и отработал.

Покурил немного мануал и вот изменения
Код: Выделить весь код
@echo off
rem Проверяем есть ли запланированное кодирование
IF EXIST "f:\Work\jobesecl\job.ecl" (
Call :ccenc
) ELSE (
Call :mkdvd
)

rem Вызываем CinemaCraft Encoder для выполнения задания
:ccenc
ccew -ecl "f:\Work\jobesecl\job.ecl" -batch

rem Авторинг

rem Приложения
:mkdvd
set mx=.\DVDauthor\mplex.exe -f 8 -o
set compl=.\DVDauthor\dvdauthor.exe
set brnr="%programfiles%\Nero\Nero 9\Nero Express\NeroCmd.exe" --write --drivename g --iso photomir --DVD --dvdvideo_cmpt --create_iso_fs --create_udf_fs --iso-no-joliet --dvdvideo_realloc --recursive "f:\Work\compiled\
 
rem Папки
set demuxfld=f:\work\demuxed
set remuxfld=f:\work\remuxed
set outptfld=f:\work\compiled

rem Ремуксинг
for %%a in (%demuxfld%\*.mpv) do %mx% %remuxfld%\%%~na.mpg %demuxfld%\%%~na.mpv %demuxfld%\%%~na.mpa

call :xml

rem Компиляция DVD
for %%b in (%remuxfld%\*.vob) do (
	ren "%%~fb" tempfile.vob
	%compl% -o %outptfld% -x config.xml
	ren "%%~dpbtempfile.vob" "%%~nb.vob"
	)

rem Очистка remux файлов
del %remuxfld% /F /Q

rem Запись DVD-Video
for /D %%d in ("%outptfld%\*") do %brnr%%%~nd"

echo "КОНЕЦ"
pause
goto :eof

:xml
echo ^<dvdauthor^> >config.xml
echo ^<vmgm /^> >>config.xml
echo ^<titleset^> >>config.xml
echo ^<titles^> >>config.xml
echo ^<pgc^> >>config.xml
echo ^<vob file="%remuxfld%\tempfile.vob" /^> >>config.xml
echo ^</pgc^> >>config.xml
echo ^</titles^> >>config.xml
echo ^</titleset^> >>config.xml
echo ^</dvdauthor^> >>config.xml
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:11, 16-02-2010 | #17


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Почти....
rem Компиляция DVD

for %%b in (%remuxfld%\*.vob) do (
ren "%%~fb" tempfile.vob
%compl% -o %outptfld%ВОТ ТУТ ДОЛЖЕН БЫТЬ \Имя исходного файла. Иначе компиляция будет заменяться одна другой. А мне надо что бы они были каждая в своей папке -x config.xml
ren "%%~dpbtempfile.vob" "%%~nb.vob"
)

Отправлено: 04:40, 20-02-2010 | #18


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030

Профиль | Отправить PM | Цитировать


taravasya, у утилиты ключ -o означает вывод в каталог, а никак не вывод в файл
Обновление кода
Код: Выделить весь код
@echo off
rem Проверяем есть ли запланированное кодирование
IF EXIST "f:\Work\jobesecl\job.ecl" (
Call :ccenc
) ELSE (
Call :mkdvd
)

rem Вызываем CinemaCraft Encoder для выполнения задания
:ccenc
ccew -ecl "f:\Work\jobesecl\job.ecl" -batch

rem Авторинг

rem Приложения
:mkdvd
set mx=.\DVDauthor\mplex.exe -f 8 -o
set compl=.\DVDauthor\dvdauthor.exe
set brnr="%programfiles%\Nero\Nero 9\Nero Express\NeroCmd.exe" --write --drivename g --iso photomir --DVD --dvdvideo_cmpt --create_iso_fs --create_udf_fs --iso-no-joliet --dvdvideo_realloc --recursive "f:\Work\compiled\
 
rem Папки
set demuxfld=f:\work\demuxed
set remuxfld=f:\work\remuxed
set outptfld=f:\work\compiled


echo ^<dvdauthor^> >config.xml
echo ^<vmgm /^> >>config.xml
echo ^<titleset^> >>config.xml
echo ^<titles^> >>config.xml
echo ^<pgc^> >>config.xml
echo ^<vob file="%remuxfld%\tempfile.vob" /^> >>config.xml
echo ^</pgc^> >>config.xml
echo ^</titles^> >>config.xml
echo ^</titleset^> >>config.xml
echo ^</dvdauthor^> >>config.xml


rem Ремуксинг
for %%a in (%demuxfld%\*.mpv) do %mx% %remuxfld%\%%~na.mpg %demuxfld%\%%~na.mpv %demuxfld%\%%~na.mpa

rem Компиляция DVD
for %%b in (%remuxfld%\*.vob) do (
	md "%outptfld%\%%~nb"
	ren "%%~fb" tempfile.vob
	dvdauthor -o "%outptfld%\%%~nb" -x config.xml
	ren "%%~dpbtempfile.vob" "%%~nb.vob"
	)

rem Очистка remux файлов
del %remuxfld% /F /Q

rem Запись DVD-Video
for /D %%d in ("%outptfld%\*") do %brnr%%%~nd"

echo "КОНЕЦ"
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:09, 20-02-2010 | #19


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Эт я понимаю Я имел ввиду что папка должна создаться с именем полученным от файла. Ну во общем у Вас вроде бы это сейчас и вышло. Как появиться возможность проверю.

Отправлено: 11:56, 20-02-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Ошибка перекодировки русских символов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Проблема пакетной перекодировки файлов rBBWYwg Microsoft Windows 2000/XP 0 04-08-2009 16:57
Пишем JavaScript перекодировки из кириллицы в латиницу maasja Вебмастеру 16 08-06-2009 22:10
Преобразование русских символов в адресной строке Zalegajuschij Хочу все знать 6 26-02-2009 00:22
Именение разрешния без перекодировки zhecka Видео и аудио: обработка и кодирование 2 28-11-2006 18:04
Монтирование разделов msdos с нормальным отображением русских символов BurzumII Общий по FreeBSD 19 18-01-2005 15:58




 
Переход