2011-01-31 04:29:39 +0000 2011-01-31 04:29:39 +0000
64
64

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

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

答案 (2)

46
46
46
2011-02-02 09:14:36 +0000

简短的答案是不,这是不可能的

**另外,我想问一下,你想要解决的问题是什么?虽然鼓励使用Unicode](http://msdn.microsoft.com/en-us/library/dd374081%28v=vs.85%29.aspx),但你可能永远无法确定你的应用程序是否都支持Unicode。

你可以做的****是改变每个应用程序的默认字符编码。

  • 对于Eclipse,新文件的默认编码可以在Windows ⁄首选项⁄常规⁄内容类型中设置(参见Eclipse社区表单](http://www.eclipse.org/forums/index.php?t=msg&goto=543800&))
  • 对于记事本来说,可以在Windows ⁄首选项⁄常规⁄内容类型中设置。导航到Settings(设置)>Preferences(首选项)> New Document/Default/Directory(新建文档/默认/目录),然后将编码设置为UTF-8_
  • 至于Thunderbird,我很确定它已经使用UTF-8作为默认编码了?参见这些关于字符编码的注意事项
  • 在OpenOffice(和LibreOffice)的情况下,你甚至不需要关心编码问题,因为OpenOffice保存的文档是基于XML的,在XML文件中,编码是在内部指定的(UTF-8已经是默认的)
  • 从UTF-8的角度来看,PowerShell很棘手。
  • 关于从PowerShell输出文件到UTF-8,请看本答案
  • 关于改变默认编码,请看本答案
23
23
23
2011-04-17 06:49:09 +0000

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

  • 当Unicode刚刚出现时,微软决定UCS-2是支持Unicode的最佳方式。当时Unicode是16位的。
  • Windows对每种支持的语言都有一个ANSI代码页,不像Unix和Linux可以独立设置语言和编码。具体来说,它与Windows中的一些MultiByte支持有冲突,因为Windows中的MultiByte字符需要1到2个字节,而UTF-8需要1到4个字节。例如,WriteFile() API在代码页65001下返回一个不正确的结果,这个结果会在所有依赖它的库代码中冒出一个不正确的结果,例如write()。当年,我直接给他发了几篇关于这些问题的邮件。