编辑2#:

编辑2#:

我正在用 VB.NET 编写一个小应用程序,这样我就可以轻松创建一个带有密码的用户“Windows 7 帐户”,而不必通过控制面板。
我遇到的问题是,当我使用 UTF-8 编码在 VB.NET 中创建批处理文件时,它不会像预期的那样写入 å ä ö。
我尝试了所有能找到的编码,但无法使其正常工作。

如果有人知道我为什么会得到这个结果,请告诉我。

答案1

编辑:我错了 ;)
cmd.exe确实接受 UTF-8,但你需要确保保存它没有位于BOM文件开头。

这是第二个测试。您可以chcp 65001在批处理文件的开头使用它。

在此处输入图片描述


批处理文件不能类型为 UTF-8。它必须是 ASCII。Cmd.exe不接受其他格式。我做了一个小测试,你可以使用你的字符,但需要做一些工作。

test.bat使用创建一个文件echo Å Ä Ö。使用 格式保存ANSI/ASCII。打开cmd.exe并确保你的cmd.exe用途Lucida Console(显示 Unicode 字符)。

当你输入文件时,它将显示旧 DOS 字符。你可以看到一个翻译图表这里

当你切换到“Windows Ansi”时代码页(即西欧拉丁语)chcp 1252字符是否正确显示。它们是否也转移到各自的实用程序取决于该实用程序。

但是你为什么要为此创建批处理文件?你不能直接用 VB.net 编写代码吗?

命令执行程序


编辑2#:

Lucida Console设置方法如下cmd.exe

Lucida 控制台


BOMUTF-8 文件的开头有 3 个字符。()\xEF\xBB\xBF
在 VB.net 中,您将创建一个文件没有BOM这样:

Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
                                                  '^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
    sink.WriteLine("...")
End Using

答案2

对我来说解决这个问题的方法是将文件保存为不带 BOM 的 UTF-8 格式,然后使用此代码

@echo off
chcp 65001
net user Linus /add
net localgroup Administratörer Test/add

我以前没用过的东西是@echo 关闭这样,使用 chcp 65001 就可以解决问题!非常感谢 Rik 提供的所有帮助 :)

相关内容