gpt4 book ai didi

windows - 在 Win7 中,Unicode/UTF-8 文本文件 : gibberish on Windows console (Trying to display hebrew)

转载 作者:行者123 更新时间:2023-12-02 07:51:10 32 4
gpt4 key购买 nike

我有一个宽字 rune 件(带有希伯来语文本),在记事本中看起来不错(以“UTF-8 编码”保存),在 Notepad++ 中读取良好,当我复制并粘贴到 MS Word 中时,它看起来也不错。但是,当我打开一个“DOS 框”(Windows 控制台)并转到:“键入 file.txt”时,它会打印出乱码。是的,我已经在 Windows 控制台上完成了对 Unicode 的所有建议:我使用“cmd”打开了控制台/u”,我将字体更改为 Lucida,然后输入:“chcp 65001”。
该问题在运行 Windows 7 的 PC 和另一台运行 Windows XP SP3 的 PC 上是相同的。

最佳答案

字体 Courier New支持希伯来语,可以添加到命令提示符中。默认字体是 consolas、lucida、raster,它们都不支持希伯来语。因此,将 Courier New 添加到命令提示符中。

这是一个注册表黑客来做到这一点

http://www.howtogeek.com/howto/windows-vista/stupid-geek-tricks-enable-more-fonts-for-the-windows-command-prompt/

http://www.techrepublic.com/blog/windows-and-office/quick-tip-add-fonts-to-the-command-prompt/

这是如何安装字体的一个很好的例子,但我应该删除很多这些条目,因为它们中的大多数没有被添加到 cmd 中,因为 cmd 不支持它们。

Lucida 和 Consolas 是默认设置。
栅格是此处未列出的默认值,可能是因为它是 TTF
在我尝试添加的所有这些中,仅添加了 3 个(cmd 支持)
Courier New、DejaVu Sans Mono、Droid Sans Mono

DejaVu Sans Mono 和 Droid Sans Mono 可下载,由 cmd 支持,可能有一些很好的 unicode 支持/字符,但不包括希伯来语

enter image description here

我有

Consolas <-- default
Courier New <--- added
DejaVu Sans Mono <-- added
Droid Sans Mono <-- added
Lucida Console <-- default
Raster Fonts <-- default

常见的希伯来语字体是 Miriam 和 David,但它们无法添加到命令提示符中。

作为记录,Babelmap 可以列出您系统上支持希伯来语的所有字体,例如在 babelmap-单击 fonts..font coverage,然后输入 05D0(那是 aleph)。我认为所有这些字体都存在于默认的 Windows 7 安装中
Aharoni, Arial, Courier New, David, FrankRuehl, Gisha, Levenim MT, Lucida Sans Unicode, Microsoft Sans Serif, Miriam, Miriam Fixed, Narkisim, Rod, Segoe WP, Tahoma, Times New Roman

但是,除了 Courier New 之外,命令提示符中不支持大多数或所有带有希伯来语的字体。事实上,命令提示符不支持大多数字体句号,甚至不支持“times new roman”(因为“times new roman”不是等宽/固定宽度,这是它的众多标准之一支持,其他标准似乎更模糊)。

所以现在您可以在命令提示符中添加和选择 Courier New。

enter image description here

因此,您可以将 unicode 字符粘贴到 cmd 上,前提是所选字体支持它。

enter image description here

要复制/粘贴,请单击 Charmap 中的“复制”按钮

现在它在剪贴板中

要将其粘贴到命令提示符中,在 win7 中粘贴到命令提示符中不是 ctrl-v。您右键单击并选择粘贴。 (或者如果处于快速编辑模式,则只需右键单击)

enter image description here

这是主要的。

另外

通常在 Windows 中,人们可能会使用记事本和字符映射……但应该注意它们的一些限制。

当您选择的字体支持时,字符映射会显示前 65536 个 unicode 字符,字符映射会显示 UTF-16 代码。没关系,您仍然可以从字符映射粘贴到 cmd.exe 窗口,但是您应该知道在 cmd.exe 中运行的命令和管道不支持 utf-16。所以你可以使用字符映射,找到一个字符,例如aleph 05d0,但值得在 http://www.fileformat.info/info/unicode/char/05d0/index.htm 上查找角色并且看到虽然 utf-16 代码是 05d0,但 utf-8 代码是 d790。 xxd 命令和 file 命令对于查看文件的真实内容和确定文件类型很有用。

当涉及到 unicode 或 unicode 字符集中任何 UTF16 代码 > FF 的字符时,记事本有点受限。 cmd 在某些命令(如“type”)以及管道和重定向方面有一些限制。

如果使用 cmd.exe 你真的需要管道来工作,因为管道很重要..

管道仅限于可以由 CHCP 命令指定的编码。

(注意,如果 CHCP 告诉你你在一个特定的代码页上,例如 850,它会告诉你输入编码。如果你运行命令 chcp 850 它会改变输入和输出编码。通常它们是相同的。当它们是相同的。但是如果您使用其他程序来更改 cmd 的编码,例如 c# 编译器有一个更改它的开关,那么最好使用 chcp 更改它,以便您知道两种编码都已设置)。

有一个 CHCP 1200 (UTF-16LE) 和 1201(UTF-16BE) ,但都不支持,如果你尝试它会说无效的代码页(在 win7 中测试)。 CHCP 不支持 UTF-16(不支持 UTF16LE 或 UTF16BE)。有 CHCP 65001(即没有 BOM 的 UTF-8)。还有 CHCP 862(我提到的编码希伯来语的老式方式,如 MSDOS 时代的方式)

type 命令和记事本一样支持 UTF16LE(记事本称为 Unicode,是 UTF-16 LE),但管道和重定向不支持。 type 命令还支持 CHCP 指定/支持的任何代码页。所以类型支持 862 或 65001。

因此,您可以使用记事本将其保存为 UTF8(带有 BOM),然后摆弄以删除 BOM。 (这有点矫枉过正).. 或者你可以使用记事本,将其保存为 Unicode UTF 16LE.. 但是你不能起诉管道..(这很糟糕).. 最简单的方法是使用文本编辑器,如 notepad2 或notepad++,支持没有BOM的UTF8。

或者,如果从 cmd 执行所有操作,您可以使用 862 或 65001。尽管许多文本编辑器可能无法很好地支持 862。所以您可能更喜欢 65001。

如果您想在记事本中写入任何文件并且它的字符大于 UTF16 中称为\uFF 的字符,并且您想在该文件上运行 cmd.exe 中的命令,那么一些命令(例如 type 命令),如果你不考虑什么支持​​什么,就会有问题。

记事本支持带有 BOM 的 UTF-16BE、UTF-16LE 和 UTF-8。这不好。并且无需摆弄 xxd 和 sed 或其他命令来删除 BOM。如果您有任何带有所谓 unicode 字符的文件,即常规 ascii 范围之外的字符。一个字符 > UTF-16 的\uFF,如字符映射所示 >\uFF,然后使用 Notepad2 或 notepad++

类型支持 UTF16LE,以及由 CHCP 设置的任何代码页,例如65001 或 862。

管道和重定向由 CHCP 设置。

代码页 862 很旧,因此代码页 65001 是一个不错的选择。

xxd 和 file 可用于查看文件的编码方式,如果您遇到问题,这可能会有所帮助。但并非绝对必要。

因此,如果您想编写一个在 CMD 中使用的文件,并且它有一些 unicode 字符,而您有一些命令,如 xxd 和 sed 可用于删除 BOM,以及其他命令来执行此操作。在文本编辑器中制作此类文件的最简单方法是使用像 notepad2 或 notepad++ 这样的文本编辑器,它支持 UTF8 而没有 BOM。

如上所述,让希伯来语显示可能是最重要的事情。接下来是能够在文本编辑器中保存文件,您可以使用例如'类型'。

如果您想从命令提示符复制,如果不是在快速编辑模式下,则右键单击然后选择标记,然后选择它,然后按 ENTER。并粘贴右键单击并选择粘贴。

还有一点是

显然 chcp 65001 中存在一些错误,其中某些批处理文件无法运行,并且某些 C 程序也可能无法运行。 How to use unicode characters in Windows command line?我什至看到当 cmd 位于代码页 65001 时,c 锐利编译器崩溃(尽管有人可能会责怪 C 锐利编译器,但也可以归咎于 65001) Why is csc.exe crashing when I last left the output encoding as UTF8?

备注 - 这个答案的早期版本有一些命令行示例,但它们不必要地复杂。我可能会在某个时候添加一些命令来演示我所描述的内容,但这相当琐碎。

关于windows - 在 Win7 中,Unicode/UTF-8 文本文件 : gibberish on Windows console (Trying to display hebrew),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321419/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com