2014-11-29 4 views
1

언어 독립성을 위해 텍스트 파일을 사용하는 배치 파일이 있습니다. 어제까지 모두 정상적으로 작동했지만 ... 표준 텍스트를 네덜란드어와 독일어로 번역하기 시작했습니다. 두 언어 모두 ä, ë, ö와 같이 분음 부호 또는 악센트 부호가있는 문자를 사용합니다. 나는 스페인어가 ñ에 동일한 문제를 줄 것이라고 생각한다. 메모장에서 표준 인코딩 인 ANSI를 사용하여 텍스트 파일을 만들었습니다. 파일을 입력하는 것만으로 (DOS : TYPE) 잘못된 악센트 부호가있는 문자가 표시되었습니다. ë로 나타났다. 텍스트 파일을 편집하고 유니 코드 인코딩으로 저장 한 후 DOS TYPE은 메모장에서 입력 한 내용을 정확히 보여줍니다. 이 시점에서 나는 내 문제가 해결되었다고 생각했지만 ... 내 일괄 처리 코드는 이제 전혀 텍스트를 보여주지 않습니다! 모든 텍스트는 다음과 같습니다 배치 파일로 파일에서 검색 (간체) : ECHOON 경우배치 파일의 ANSI/유니 코드 충돌

@rem Parms %1 text type number    File %%a program name 
@rem  %2 program name (double quoted)  %%b - - filler (tabs) 
@rem  %3 text number      %%c text number 
@rem  %4 replacement value - 1    %%d - - filler (tabs) 
@rem  %5 replacement value - 2    %%e text string 
set TempText= 
set TempType= 
setlocal enabledelayedexpansion 
@rem Read file until both values are set ... 
for /f "usebackq tokens=1,2,3,4,5 delims=|" %%a in ("%EnvPath%Text.txt") do (
    if /i %%a==Tools (if /i %%c==%1 (set TempType=%%e)) 
    if /i %%a==%~2 (if /i %%c==%3 (set TempText=%%e)) 
    if not "!TempType!"=="" (if not "!TempText!"=="" (goto :Leave)) 
) 
:Leave 
endlocal & set TempText=%TempText%&set TempType=%TempType% 

는 어떤 라인이 파일에서 읽되거나 FOR 루프가 실행되지 않습니다 보여줍니다.

제 질문은 : 어떻게 유니 코드 텍스트를 읽을 수있는 FOR 루프를 만들 수 있습니까?

+0

먼저 비 유니 코드 파일 만 먼저 확인과 시도 'CHCP'와 함께 코드 페이지를 만들 수 있습니다. 코드 페이지를 20106과 같은 독일어를 지원하는 것으로 변경하려고 할 수 있습니다 -'CHCP 20106'으로. 유니 코드 파일을 cmd로 처리하려면 명령 프롬프트에'/ U' 스위치를 사용해야합니다 또는 '65001' 페이지를 코드화하려고 시도하십시오. – npocmaka

+0

코드 페이지에 대한 추가 정보 : https://en.wikipedia.org/wiki/Code_page –

답변

1

문제는 cmd가 코드 페이지 850을 사용한다는 것입니다 (미국에서는 437 일 수 있음). 보려면 chcp을 입력하십시오. 영어 Windows는 1252를 다른 곳에서 사용합니다.

GUI 프로그램

ñ 0xf1 

콘솔 프로그램

는 32 비트 사용 EDIT.EXE (A 도스 텍스트 편집기)에있는 경우
ñ 0xa4 

. 그렇지 않으면 Word를 사용하고 MSDos 텍스트로 저장할 수 있습니다.

0

삼년 말,하지만 ...

당신이 type 명령을 "즉시"ANSI로 파일을 변환 할 수 있습니다

:

... %%a in ('type "%EnvPath%Text.txt"') do (