在cmd批处理文件中使用非ASCII字符

10

我正在编写一个.bat程序,而该程序是用芬兰语编写的。问题在于CMD不识别这些“特殊”的字母,例如Ä,Ö,Å。

有没有办法使它们可以使用?我也希望用户能够使用这些字母。

我的代码的一部分:

    @echo off
    /u
    title JustATestProgram
    goto test123

    :test123
    echo Letters : Ää Öö Åå
    pause
    exit
打开这个文件时,字母看起来是这样的:

Enter image description here


嗨,请尝试提供一个描述性的标题。这个网站存在的主要原因是帮助每一个在你之后来到这里的人,所以你需要让你的问题可以被搜索到。 - Ben
答案在这里:https://dev59.com/zHM_5IYBdhLWcg3wt1k0 - Endoro
我不这么认为,@Endoro;看起来,OP使用的编辑器编码不支持这些字符... - Ben
@Ben,这可能是,但很可能不是。我这里有很多编辑器,_所有_都支持这个功能。但他的编辑器设置可能有问题。 - Endoro
4个回答

21

尝试将此行放置在批处理文件顶部:

chcp 65001

它应该将控制台编码更改为UTF-8,然后您应该能够在脚本中正确读取文件。


2
理论上,您只需要使用/u(Unicode)开关:
c:\>cmd /u
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\>echo Ä
Ä

我在我的测试程序中尝试了那个,但它没有起作用。我可以展示一张图片(特殊字符如何显示)和部分代码,但我不能因为我的声誉不够高。 - batchguy11
你说“打开这个文件”@batchguy11;你是要将其输出到文件吗?你能在屏幕上显示这些内容吗(不涉及文件)?很可能是你用来打开文件的程序没有配置处理Unicode。 - Ben
是的,我可以在CMD上打印äöå,但出于某种原因,在这个.bat程序中无法打印。哦,当我说“打开这个文件”时,我的意思是我制作了一个名为test.bat的程序,并且它具有上面的代码。我该如何配置文件以使用Unicode? - batchguy11
不好意思,@batchguy11,你需要查看你所使用的文本编辑器的帮助文档。 - Ben

1
如果您使用Notepad ++,可以简单地更改字符集。这样做将允许您编写所需字符集的字母。西部地区-美国应该支持它。
您可以在Notepad ++的下拉菜单中执行此操作,也可以手动编写chcp 437。但是我建议您在Notepad ++中执行此操作,因为它会显示批处理输出结果。因此,您将轻松看到是否使用了正确的代码页。同时,如果您需要更多特殊符号,则很容易切换。您还可以像先前的帖子中所述尝试UTF-8。
您可以在此处阅读更多信息:http://ss64.com/nt/chcp.html。这里有一个不同代码页的列表(查看OEM页面):Code Page Identifiers

0
命令提示符使用DOS编码。Windows使用ANSI或Unicode。
PS:我假设您使用的是代码页437而不是国际英语/西欧850。
因此,我使用字符映射获取DOS代码,然后找出该代码映射到的ANSI字符。
这是记事本的内容。
echo Ž„™”†

这是通过将字符的DOS代码放入记事本中制作的。

0142、0132、0153、0148、0143、0134,它们显示为上述ANSI字符。

命令提示符输出

C:\Windows\system32>echo ÄäÖöÅå
ÄäÖöÅå

Alt + 字符编码
按住 Alt 键并在数字键盘上按下字符编码将输入该字符。使用的键盘语言必须支持输入该字符。如果您的键盘支持,则代码显示在字符映射中右侧的状态栏中,否则此部分状态栏为空。对于具有众所周知的键(如字母 A 到 Z),状态栏也为空。
然而,有两种输入代码的方法。要记住的是,前 127 个代码的字符相同。区别在于第一个键入的数字是否为零。如果是,则代码将插入当前字符集中的字符,否则它将插入 OEM 字符集中的字符。超过 255 的代码输入 Unicode 字符,并以十进制表示。输入的字符会转换为 DOS 应用程序的 OEM 格式,或者根据 Windows 应用程序的不同,转换为 ANSI 或 Unicode 格式。请参阅十进制和十六进制之间的转换。
例如,按住 Alt 键,然后按 0、6、5,最后释放 Alt 键,即可输入字母 A。

来自我在https://1drv.ms/f/s!AvqkaKIXzvDieQFjUcKneSZhDjw上的快捷键和按键修饰符


在没有数字键盘的笔记本电脑或键盘上,Alt代码无法使用。 - Zimba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接