Notepad中的Unicode文件

24

当我在记事本中将文本文件保存为“Unicode”时,这意味着什么?它是Utf-8、Utf-16还是Utf-32?谢谢。


可能是UTF-8,因为它是最常见的。 - Linuxios
1
@ Linuxios,但是在记事本中保存文件有另一个选择叫做 Utf-8!! 怎么会重复了呢? - FSm
2个回答

34

在Notepad中,“Unicode”作为编码名称表示UTF-16 Little Endian(UTF-16LE),这与Windows软件一般采用的方式相同。(起初我认为它不是真正的UTF-16,因为Notepad++将其识别为UCS-2并显示为垃圾字符,但通过再次使用BabelPad进行检查,我得出结论:Notepad甚至可以正确编码非BMP字符。)

同样,“Unicode big endian”表示UTF-16 Big Endian。而“ANSI”表示系统的本地遗留编码,例如Windows西方版本中的8位windows-1252编码。


@ Jukka K. Korpela... 哪个能覆盖更多的字符?Unicode 还是 UTF-8? - FSm
3
UTF-16和UTF-8涵盖完全相同的字符;它们只是Unicode的两种传输编码方式。Windows之所以使用“Unicode”一词来表示UTF-16,仅是因为其在内部使用UTF-16来处理Unicode。 - Jukka K. Korpela
3
每个UTF都可以编码Unicode的所有字符。 - melpomene
@ Jukka K. Korpela,我正在处理一种名为库尔德语的印欧语言。为了进行良好的文本处理,我应该保存哪种Unicode格式的文件?Unicode和UTF-8是相同的吗? - FSm
2
@Qaesar,任何合理的文本处理软件都可以读取UTF-16(Windows“Unicode”)和UTF-8,并在需要时转换为其内部表示。如果您编写自己的程序代码,只需从库中选择适当的输入读取例程即可。因此,这并不是很重要。Windows软件内部使用UTF-16。但对于网页,应使用UTF-8(浏览器和搜索引擎对UTF-16的支持较差)。 - Jukka K. Korpela
utf8everywhere.org概括了所有内容。不幸的是,记事本默认会做错误的事情。但是,您可以在保存时选择正确的选项来保存标准的UTF-8文件。 - Pavel Radzivilovsky

-4
所有这些格式都是“Unicode”。但通常在Mac和Windows上使用的编辑器指的是UTF-8,因为它在代码128以下与ASCII兼容。UTF-8可以表示比256个代码更多的代码(适合8位单字节),通过使用特殊字符,该字符意味着下一个字节也属于同一字符。
如果您在终端中查看输出,例如使用vi,并且如果您在每两个字符之间看到一个空格,则表示您正在查看UTF-16,因为那里每两个字节组成一个字符。您应该看到的是字符之间没有空格,这是UTF-8的指示。

1
@ Cocoanetics,如果编辑们的意思是UTF-8,那么为什么记事本保存文件时还有另一个名为UTF-8的选项? - FSm
...因为Windows很奇怪。当Windows开始涉足Unicode时,它们首先采用了UTF16(请参见其他答案),并将其称为“Unicode”。然而,随着时间的推移,UTF8开始在各个领域被广泛使用,并成为事实上的标准。 - Cocoanetics

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