Utf 8 我可以避免在Windows上使用CP1252吗?

Utf 8 我可以避免在Windows上使用CP1252吗?,utf-8,cp1252,Utf 8,Cp1252,我想使用我所有的工具包,但发现Windows上的一些工具似乎在使用(这似乎是Windows特有的)。这是否会产生不兼容的输出?如果是,在哪些代码点?如果是,我能做些什么吗 (我不完全理解这些问题,因此我非常感谢关于这些编码的基础教育)。CP1252和UTF-8对于所有

我想使用我所有的工具包,但发现Windows上的一些工具似乎在使用(这似乎是Windows特有的)。这是否会产生不兼容的输出?如果是,在哪些代码点?如果是,我能做些什么吗


(我不完全理解这些问题,因此我非常感谢关于这些编码的基础教育)。

CP1252和UTF-8对于所有<128的字符都是相同的。除此之外,他们的意见不同。所以,如果你坚持英语,远离变音符号,这些都是一样的


大多数Windows工具将使用任何设置为当前用户当前代码页的内容,对于美国Windows,默认为1252。您可以很容易地将其更改为另一个代码页。但是UTF-8不是Windows可用的代码页选项之一。(但愿如此)

Windows下的某些实用程序会在文件开始时理解。不幸的是,除了尝试之外,我不知道如何确定这是否有效。

六岁了,仍然相关:


现在,关于你的问题:是的,仍然有一些工具阻塞了UTF-8文件。但越来越多的工具正在“得到它”。如果您正在开发自己的东西,您可能希望了解Python 3,其中所有字符串都是Unicode。其原理是尽可能早地将所有输入转换为Unicode(如有必要),并尽可能晚地将其重新转换为目标编码。有一些工具包可以很好地猜测特定文件的编码(例如,'s,端口)。如果您正在处理未指定编码的文件,这很好。

工具Windows上代码页1252的硬编码不太可能。更有可能的是,它恰好是您机器上的默认代码页。1252用于西欧和美洲。它在控制面板、区域和语言选项中配置。他们使用了不同的名称,在Win7上,它位于“管理”选项卡“更改系统区域设置”中


是的,许多工具使用默认代码页,除非它们有充分的理由选择其他编码。这是一个很好的理由。值得注意的例子是记事本(除非您将“文件+打开”对话框中的编码更改为Ansi以外的编码)和C/C++编译器。使用默认代码页通常不需要执行任何特殊操作。当您没有BOM表时,猜测文本文件的正确代码页是不可能准确完成的。谷歌“布什隐瞒了事实”,这是一个非常有趣的战争故事。

UTF-8在Windows上受支持,但不是当前的代码页。您可以使用UTF-8进行转换,但不能将is设置为当前代码页

首先,不要试图通过设置代码页来浪费时间——这种方法会让你想起Sisyphus神话——使用代码页并不能真正解决问题,你必须使用Unicode

唯一真正适合您的解决方案是将您的应用程序构建为Unicode,这样它将使用UTF-16,并在输入/输出操作中转换为UTF-8。这是非常简单的,因为fopen支持读取或写入UTF-8

关于UTF-8文件的其他Windows工具的使用,您不应该知道,因为如果该工具能够使用ASCII,它将使用UTF-8(即使如此,它可能无法区分Unicode字符,但至少能够加载/解析文件)

顺便说一句,您忘了指定您使用的编程语言以及您考虑使用的Windows工具


此外,如果您对更多国际化内容感兴趣,请访问我的

非常清楚,相应地令人失望!不幸的是,我们处理其他人编写的文本,因此我们必须处理许多代码点。虽然使用UTF字节顺序标记表示文件是UTF在技术上是错误的,但我已经看到了这项工作(我自己也做过)。