【发布时间】:2015-01-28 02:00:03
【问题描述】:
我有一些使用文本文件实现语言独立性的批处理文件。直到昨天一切正常......但后来我开始将标准文本翻译成荷兰语和德语。两种语言都使用所谓的变音符号或重音字符,如 ä、ë、ö。我认为西班牙语会给ñ同样的问题。我使用标准编码(即 ANSI)使用记事本创建了文本文件。只需键入(DOS:TYPE)文件显示错误的重音字符:例如ë 显示为 Ù。在我编辑文本文件并使用 Unicode 编码保存后,DOS TYPE 显示了我在记事本中输入的内容。在这一点上,我认为我的问题已经解决了......但是我的批处理代码现在根本没有显示任何文本!所有文本都通过一个看起来像这样(简化)的批处理文件从文件中检索出来:
@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%
当ECHO 是ON 时,它表明没有从文件中读取任何行,或者永远不会执行 FOR 循环。
我的问题是:如何让 FOR 循环读取 Unicode 文本?
【问题讨论】:
-
首先尝试使用非 unicode 文件,但首先使用
CHCP检查代码页。您可以尝试将代码页更改为支持德语的代码页,例如 20106 - 使用CHCP 20106。如果您要使用 cmd 处理 unicode 文件,您必须使用/U开关启动命令提示符或尝试代码页65001 -
代码页的更多信息:en.wikipedia.org/wiki/Code_page
标签: windows batch-file unicode character-encoding ansi