什么编码才能让 Å Ä Ö 工作

kag*_*100 13 windows-7 encoding vb.net

我正在 VB.net 中编写一个小应用程序,它使我能够轻松地创建一个带有密码的用户“Windows 7 帐户”,而不是通过控制面板。我遇到的问题是,当我使用 UTF-8 编码在 VB.net 中创建一个 bat 文件时,它不会像预期的那样写 å ä ö。我已经尝试了我能找到的所有编码,但无法让它工作。

如果有人知道我为什么得到这个,请告诉我。提前谢谢!

Rik*_*Rik 13

编辑:我错了;)
cmd.exe不接受UTF-8,但你需要确保将其保存,而不BOM在文件的开头。

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

在此处输入图片说明


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

做一个文件test.batecho Å Ä Ö。用格式保存ANSI/ASCII。打开 acmd.exe并确保您的cmd.exe用途Lucida Console(以显示 Unicode 字符)。

当您键入文件时,它会将字符显示为旧的 DOS 字符。您可以在此处查看翻译图表。

当您切换到“Windows Ansi”时,带有字符的代码页(即西欧拉丁语)chcp 1252将正确显示。如果它们也被转移到各自的实用程序,则取决于该实用程序。

但是你为什么要为此创建一个批处理文件?你不能只在 VB.net 中编码吗?

命令行工具


编辑2#:

这是您设置Lucida Console的方式cmd.exe

Lucida 控制台


BOM是 UTF-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
Run Code Online (Sandbox Code Playgroud)

  • @JohnLBevan 是的,你说得对。显然 `find` 不能很好地处理 UTF-8 输入。但是你可以使用`findstr`。像这样:`ping 127.0.0.1 -n 2 | findstr /C:" = "` (2认同)