【发布时间】:2014-09-11 03:48:12
【问题描述】:
我正在编写解释器,但遇到了一个涉及字符集的特殊问题。 (我认为)。
当我在我的 Mac 上创建一个名为 hello.rd 的文件并运行该命令时;
file -I hello.rd
我得到这个输出:
hello.rd: text/plain; charset=utf-8
这表明该文件应该是 UTF-8。源文件如下所示;
print "Hello World á"
终端中的输出是:
Hello World á
这就是我想要/期望的方式。当我在 Windows 上执行代码时出现问题。当我在 Windows 上执行相同的代码时,我得到以下输出:
如您所见, á 未正确输出。我将代码页更改为 65001 并没有什么区别,但是当我使用 Lucida Console 字体时,字符显示正确。但我无法理解的是,为什么我可以使用键盘在终端中输入字母á 并显示它,但它不会从我的文件中显示出来。
接下来我在 Windows PC 上创建了一个名为 test123.rd 的文件并将此文本保存在其中:
print "Hello World á ã ß"
当我在我的 Mac 上执行时,这次我得到了不正确的输出,我得到:
Hello World ? ? ?
在我的电脑上我仍然得到不正确的输出,我得到了这个:
我在我的 Mac 上对文件 test123.rd 使用了 file -I 命令,我得到了这个输出:
test123.rd: text/plain; charset=iso-8859-1
我认为由于 test123.rd 文件中的字符集不是 UTF-8,这就是文件 test123.rd 在 OSX 上显示不正确的原因,但我不明白为什么它在 Windows 上也显示不正确。
有没有人知道如何在不更改 Windows CMD 字体的情况下解决问题?
【问题讨论】:
-
您的 Windows 控制台可能正在使用第三种编码。
-
@SLaks 有没有办法确定它使用的是哪种编码?
-
我是 8 位字体。有一个命令行开关可以使用 16 位 unicode。
-
@D.Ddgg 你的意思是光栅字体是 8 位字体吗?你也知道如何将它们更改为 16 位吗?
标签: windows macos unicode fonts cmd