【问题标题】:Using box-drawing Unicode characters in batch files在批处理文件中使用画框 Unicode 字符
【发布时间】:2015-02-09 15:41:08
【问题描述】:

我正在制作一个使用这些字符的批处理文件:

˧ ˥ ˪ ˫

它不起作用,它只是自行终止。 我见过人们使用这样的字符:

Å

不是字符而是变成字符,谁能给我一个列表,显示上面的字母类型以及它变成了什么?

【问题讨论】:

  • 从控制台运行chcp会得到什么?

标签: unicode cmd special-characters


【解决方案1】:

如果您想编写使用这些字符的控制台批处理文件,您需要一个可以使用控制台代码页保存批处理文件的编辑器。要检查那是什么,请输入:

C:\>chcp
Active code page: 437

这是我的美国 Windows 系统的结果。西欧版本的 Windows 通常是代码页 850。

一个好的编辑器是Notepad++。在编辑器中设置该编码(编码、字符集、西欧、OEM-US)并将以下字符复制到其中:

@echo off
echo ╔═╦═╗ ┌─┬─┐ ╓─╥─╖ ╒═╤═╕
echo ║ ║ ║ │ │ │ ║ ║ ║ │ │ │
echo ╠═╬═╣ ├─┼─┤ ╟─╫─╢ ╞═╪═╡
echo ║ ║ ║ │ │ │ ║ ║ ║ │ │ │
echo ╚═╩═╝ └─┴─┘ ╙─╨─╜ ╘═╧═╛

将文件保存为test.bat 并从控制台运行它:

C:\>test
╔═╦═╗ ┌─┬─┐ ╓─╥─╖ ╒═╤═╕
║ ║ ║ │ │ │ ║ ║ ║ │ │ │
╠═╬═╣ ├─┼─┤ ╟─╫─╢ ╞═╪═╡
║ ║ ║ │ │ │ ║ ║ ║ │ │ │
╚═╩═╝ └─┴─┘ ╙─╨─╜ ╘═╧═╛

当您在 Notepad++ 中再次打开文件时,您可能会看到如下内容:

@echo off
echo ÉÍËÍ» ÚÄÂÄ¿ ÖÄÒÄ· ÕÍÑ͸
echo º º º ³ ³ ³ º º º ³ ³ ³
echo ÌÍÎ͹ ÃÄÅÄ´ ÇÄ×Ķ ÆÍØÍµ
echo º º º ³ ³ ³ º º º ³ ³ ³
echo ÈÍÊͼ ÀÄÁÄÙ ÓÄÐĽ ÔÍÏ;

由于文件中没有指明其中的字符代表什么代码页,Notepad++ 可能会选择所谓的ANSI 代码页。在美国 Windows 上是 Windows-1252。只需再次选择OEM-US 编码即可正常显示。

【讨论】:

  • 马克,非常感谢。 Notepad++ 技巧很好地解决了我们在使用大型 Xcopy 批处理文件时遇到的问题,该文件名中有一堆挪威字符。蝙蝠会在这些文件上说“未找到文件”,但一个直接的 cmd 行可以正常工作。按照你说的做,我可以运行完整的批处理文件,而且效果很好......再次感谢!
  • 在我的系统上,ÉÍËÍ» ÚÄÂÄ¿ ÖÄÒÄ· ÕÍÑÍ 的问题没有发生,但是当我切换到chcp 437 时,我的控制台变得更扁平且不那么高了。
  • 使用 chcp 437 将此文本放入我的批处理文件中有效,但这破坏了我所有的 findstr 和 call 命令。
【解决方案2】:

您可以使用的字符取决于设置的控制台代码页。您可以通过chcp 看到它。在许多系统上,它是 850 或 437。然后您可以在 that code page 中查找字符,或者找到一个支持您需要的字符并在批处理文件中使用 chcp 尽早设置它。

请注意,尽管这是该过程的设置,因此如果有人需要在之后继续使用控制台窗口,将其窗帘更改为另一种颜色可能不太好。代码页 65001 也是 UTF-8,但存在一系列问题和缺点,使其使用起来相当棘手。

还请注意,记事本不是一个有用的文本编辑器,用于编写需要更多 ASCII 的批处理文件,因为 Windows 非控制台部分中的传统编码是不同的。这可能是你的意思,Å变成了另一个字符。

【讨论】:

  • 另外值得注意的是批处理脚本必须是 ANSI 编码的。不支持 Unicode。
  • 谢谢,但是字符变得很奇怪。原来是特殊字符将其变成了 Unicode 字符。你能给我发一份可以转换成 Unicode 字符的字符列表吗?
  • @JacobRocks12,老实说这毫无意义。除了字符本身之外,没有任何字符本身可以变成 Unicode 字符。此外,»weird« 对您的问题的描述也不是很有用。
  • 字符列表看起来像@MarkTolonen 说的如下:@echo off echo ÉÍËÍ» ÚÄÂÄ¿ ÖÄÒÄ· ÕÍÑ͸ echo º º º ³ ³ ³ º º º ³ ³ ³ echo ÌÍÎ͹ ÃÄÅÄ´ ÇÄ×Ķ ÆÍØÍµ echo º º º ³ ³ ³ º º º ³ ³ ³ echo ÈÍÊͼ ÀÄÁÄÙ ÓÄÐĽ ÔÍÏ;你能把这些列表发给我吗?
  • 您是否意识到这些只是另一个代码页中的相同字节?您可以查找各个代码页的字符映射并自己制作表格。或者一个快速脚本,它获取每个字节并将其转换为两个代码页。这里的解决方案不是尝试学习字符之间的一些奥术,而是使用文本编辑器,它允许您指定您希望文本文件使用的编码(正如我和 Mark 指出的那样)。
【解决方案3】:

您只需要在任何文本编辑器(包括标准的 Windows 记事本)中工作的等价文件:

Notepad: ┌┬┐ ├┼┤ └┴┘ ─ │
cmd.exe: Ú¿ ÃÅ´ ÀÁÙ Ä ³

Notepad: ╔╦╗ ╠╬╣ ╚╩╝ ═ ║
cmd.exe: ÉË» Ìι Èʼ Í º

将此表复制到一个文本文件中,您必须将其保存为 Unicode 编码。然后,当您想在批处理文件中插入字符时,只需选择要显示的图形字符下方的那个即可。

注意:这些字符对于代码页 850 或 437 是正确的。

这张表是从this answer复制过来的。

【讨论】:

  • 如何处理包含超过 255 个代码页范围的 unicode 字符的文件名?
猜你喜欢
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
相关资源
最近更新 更多