【问题标题】:ANSI / Unicode conflict in batch file批处理文件中的 ANSI / Unicode 冲突
【发布时间】: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%

ECHOON 时,它表明没有从文件中读取任何行,或者永远不会执行 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


【解决方案1】:

晚了三年,但是……

您可以使用 type 命令“即时”将文件转换为 ANSI:

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

【讨论】:

    【解决方案2】:

    您的问题是 cmd 使用代码页 850(在美国可能是 437),输入 chcp 即可查看。英文 Windows 在其他地方使用 1252。

    图形用户界面程序

    ñ 0xf1
    

    控制台程序

    ñ 0xa4
    

    如果您使用的是 32 位,请使用 edit.exe(一个 msdos 文本编辑器)。否则,您可以使用 Word 并另存为 MSDos 文本。

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多