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


63

有没有一种方法可以将Windows 7设置为全局使用UTF-8作为标准?
设置每个文本编辑器都使用它确实很烦人。


4
因此,您想告诉OS一些东西..然后所有编辑器都神奇地将其拾起?:)您使用多少个编辑器?每三分钟一班吗?无论如何:superuser.com/questions/221593/windows-7-utf-8-and-unicode据我所知:Windows在任何地方都内部使用UTF16,我怀疑您是否可以更改它。
akira

1
我使用的编辑器:记事本,notepad ++,qt,日食,雷鸟,开放式办公室等等。我不仅在谈论纯文本编辑器,而且还涉及在文本输入和输出中使用的所有内容。大多数独立于平台的文本编辑器在Linux中将utf-8作为标准配置,但在Windows中使用Latin-1。
巴恩

不是在Windows 7上,而是在Windows 10上有可能
phuclv

Answers:


45

简短的答案是“ 否”,这是不可能的

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

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

由应用程序决定是否在内部使用unicode表示数据。尽管鼓励使用unicode,但您可能永远无法确定实际上所有应用程序都在内部支持它。

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

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

4
不是我希望得到的答案,但我认为我必须忍受真相,谢谢=)
Baarn

对于记事本窗口?
Mimouni

23

这是不可能的,主要是因为Windows不允许UTF-8作为系统ANSI代码页,即使Windows确实具有UTF-8的ANSI代码页(代码页65001)也是如此。这似乎有几个原因:

  • 当Unicode出现时,Microsoft决定UCS-2将是支持Unicode的最佳方法。当时Unicode是16位。
  • Windows对每种受支持的语言都有一个ANSI代码页,而Unix和Linux可以独立设置语言和编码。
  • 代码页65001并非在所有地方都有效。具体来说,它与Windows中的某些多字节支持不符,后者希望多字节字符需要一个或两个字节,而UTF-8需要一到四个字节。例如,该WriteFile()API在代码页65001下返回了不正确的结果,该结果在依赖它的所有库代码中冒出,例如write()

已在微软从事国际化工作的已故迈克尔·卡普兰(Michael Kaplan)拥有一个博客,“全部整理出去”,其中有几篇有关相关主题的文章。那天,我直接向他发送了有关这些问题的电子邮件。


请注意,在构思Windows(NT)时,还没有UTF-8。因此,UCS-2实际上是一个非常明智的选择(除非更改为UTF-16,否则以后无法更改)。
乔伊(Joey)

2
原因是因为UTF-8语言环境可能会破坏某些功能(可能的示例是_mbsrev),因为编写这些功能时假定每个字符使用的多字节编码不超过2个字节,因此,到目前为止,对具有更多字节的页面进行编码(例如GB 18030(cp54936)) ),并且无法将UTF-8设置为语言环境。。但至少现在可以在Windows 10上设置UTF-8语言环境
phuclv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.