gedit 可以创建 Unicode 文件吗?

gedit 可以创建 Unicode 文件吗?

使用时,bless我可以看到我的gedit输出是 ASCII。可以gedit处理某种 Unicode 吗?

答案1

当您单击另存为时,在左下角您将获得一些可供选择的编码,选择添加和删除(最后一个条目),您将获得一个可用编码列表,其中包括各种unicode编码。

在此处输入图片描述

答案2

所以我给 Bruni 截了一张图他们的答案来说明它们的意思。但后来我测试了结果。您确实可以在 gedit 或任何其他文本编辑器中选择 UTF-8 编码。但是,除非这些文件包含非 ASCII 字符**,否则它们将被检测为 ASCII。事实上,如果您通过任何方法创建“纯文本”(可疑术语*)文件,情况也是如此,并且这个答案原因如下:

当所有字符都小于 128 时,ASCII 和 UTF-8 是相同的。ASCII 是 UTF-8 的子集(也是 latin1 和许多其他编码格式的子集)。

我挑战任何人来测试这个答案;我只能通过向其中添加非 ASCII 字符在我的系统上创建一个“UTF-8”文本文件,即使我的所有终端、所有文本编辑器和我的都locale设置为 UTF-8:

$ echo unicorns > rainbows; file rainbows
rainbows: ASCII text

重定向会创建一个ASCIIecho文件(自己尝试一下!)file

$ echo ユニコーン >> rainbows; file rainbows
rainbows: UTF-8 Unicode text

添加非 ASCII 字符会自动更改编码吗?不会,只会强制file看到编码实际上是 UTF-8,因为它不能再局限于 ASCII。

总结

不用担心,您的“ASCII”文本文件是伪装的 UTF-8 文件(无法检测到它们的 UTF-8 性),并且将按照您的需要和期望进行解析。


*你很有兴趣问这个问题,所以也许你已经明白了作者的意思本文告诉我们。这篇文章进一步解释了编码,特别是为什么ASCII!=UTF-8以及为什么你需要了解你是如何编码文本的。我提取了:

关于编码最重要的事实

如果您完全忘记了我刚才解释的一切,请记住一个极其重要的事实。如果不知道字符串使用的编码,那么拥有该字符串是没有意义的。您不能再将头埋在沙子里,假装“纯”文本是 ASCII。

根本不存在纯文本。

如果您有一个字符串,在内存中、在文件中、或在电子邮件消息中,您必须知道它采用什么编码,否则您无法解释它或正确地将其显示给用户。

几乎每一个愚蠢的“我的网站看起来像胡言乱语”或“当我使用重音符号时她无法阅读我的电子邮件”问题都归咎于一个天真的程序员,他没有理解一个简单的事实:如果你不告诉我某个字符串是使用 UTF-8 还是 ASCII 还是 ISO 8859-1(Latin 1)还是 Windows 1252(西欧)编码的,你就无法正确显示它,甚至无法弄清楚它在哪里结束。有超过一百种编码,超过代码点 127,一切都将不复存在。


**有趣的事实:@ByteCommander 向我指出,file只查看文件的前 50-100kb,因此如果在文本文件开头远处有非 ASCII 字符,则file仍会认为它是 ASCII。

相关内容