包含UTF-8字符的批处理文件中的命令行参数会导致问题

本文关键字:问题 参数 UTF-8 字符 批处理文件 包含 命令行 | 更新日期: 2023-09-27 18:06:14

我编写了一个小实用程序,它将路径作为命令行参数,但是当(且仅当)该参数从批处理文件传递并且包含像Umlauts这样的UTF-8字符(不幸的是,当系统语言是德语时,这很常见)时,我会遇到麻烦。

我可以从项目调试属性传递一个带有Umlaut的文件名,没有问题。我可以通过Umlaut从命令行传递文件名,没有问题。我从批处理文件传递一个带有Umlaut的文件名,mayhem。

显然,我已经尝试保存批处理文件的UTF-8编码…但是这个该死的东西不会执行任何命令。

实际的程序是用c#编写的。我有哪些选项可以在批处理文件或代码端正确处理这些参数?

包含UTF-8字符的批处理文件中的命令行参数会导致问题

使用CHCP 1252作为批处理的第一行,它将与路径一起工作。

编辑:刚刚测试过。它会成功的。参数在不能得到正确输出(通过echo)的地方工作。

无论如何,如果你试图回显"öäü"这样的东西,它将无法正确显示。

为了完全解决这个问题,给自己找一个能够以ascii编码保存文件的编辑器(据我所知,notepad++不能)。

您可以使用utf8的PowerShell脚本。批处理程序只支持ASCII文件

如果有人发现了这个,并且使用的是Windows 10或更新版本,这里有一个更新:

chcp 65001 will set cmd to utf-8.

我不知道这是否适用于所有情况,但它对我很有帮助。