在 Windows 7 中将 UTF8 设置为默认字符编码

在 Windows 7 中将 UTF8 设置为默认字符编码

有没有办法将 Windows 7 设置为全局使用 UTF-8 作为标准?
将每个文本编辑器都设置为使用它真的很烦人。

答案1

简短的回答是不,不可能

详细地说,恐怕您无法在 Windows 7 中找到一个全局编码选项,该选项允许您 1) 设置全局默认值,2) 您列出的所有应用程序都会遵守该默认值。

另外,我想问一下您这里要解决的问题是什么?

由应用程序选择是否在内部使用 unicode 来表示数据。虽然鼓励使用 unicode,您可能永远无法确定您的所有应用程序是否确实在内部支持它。

可以做但是,这会更改列出的每个应用程序的默认字符编码:

  • 对于 Eclipse,可以从中设置新文件的默认编码Windows > 首选项 > 常规 > 内容类型(看在 Eclipse 社区表单上发帖
  • 对于 Notepad++,导航至设置 > 首选项 > 新建文档/默认/目录并将编码设置为UTF-8
  • 至于 Thunderbird,我很确定它已经使用 UTF-8 作为默认编码?(请参阅这些关于字符编码的注释
  • 对于 OpenOffice(和 LibreOffice),你实际上甚至不需要关心编码,因为 OpenOffice 保存的文档基于 XML,其中编码是在 XML 文件内部指定的(并且UTF-8已经是默认设置了)
  • 从 UTF-8 的角度来看,PowerShell 比较棘手。它的默认编码是UTF-16LE
    • 有关从 PowerShell 输出文件为 UTF-8 的信息,请参阅这个答案
    • 要更改默认编码,请参阅这个答案

答案2

这是不可能的,主要是因为 Windows 不允许 UTF-8 作为系统 ANSI 代码页,尽管它确实有一个 UTF-8 的 ANSI 代码页,代码页 65001。这似乎有几个原因:

  • 当 Unicode 刚出现时,微软认为 UCS-2 是支持 Unicode 的最佳方式。当时 Unicode 是 16 位的。
  • Windows 对每种支持的语言都有一个 ANSI 代码页,不像Unix和Linux可以独立设置语言和编码。
  • 代码页 65001 并非在所有地方都适用。具体来说,它与 Windows 中的一些多字节支持不兼容,Windows 要求多字节字符需要一个或两个字节,而 UTF-8 则需要一到四个字节。WriteFile()API例如,在代码页 65001 下返回不正确的结果,该结果会通过依赖它的所有库代码冒泡,例如write()

已故的迈克尔·卡普兰曾在微软负责国际化事务,他有一个博客,“整理好一切”,并发表了几篇相关主题的帖子。我当时直接给他发了一封电子邮件,谈到了其中一些担忧。

相关内容