我想使用我所有的工具包 UTF-8 但发现Windows上的一些工具似乎使用 CP1252 (这似乎是 Windows 特定的)。这是否会创建不兼容的输出,如果是,则在哪些代码点?如果是这样,我可以做些什么吗?

(我不完全理解这些问题,所以我很感激有关这些编码的基础教育)。

有帮助吗?

解决方案

工具硬编码代码页1252在Windows是的非常的可能性不大。更可能的是,它恰好是你的机器上的默认代码页。 1252在西欧和美洲使用。它是控制面板,区域和语言选项配置。他们一直在使用它不同的名称,Win7上它是在管理选项卡,更改系统区域设置。

是,许多工具使用默认的代码页,除非他们有一个很好的理由选择其他编码方式。 的BOM 是这样一个很好的理由。著名的例子包括记事本(除非你改变的文件+打开对话框中的编码为大于ANSI别的东西)和C / C ++编译器。通常有没有什么特别的东西,你需要做的,使用默认的代码页。猜测正确的代码页的文本文件,当你没有一个BOM是不可能准确地做。谷歌“布什隐瞒了事实,”一个非常有趣的故事战争

其他提示

已有六年历史,仍然具有相关性: 每个软件开发人员绝对必须了解 Unicode 和字符集的绝对最低限度(没有任何借口!)

现在,关于你的问题:是的,仍然有一些工具无法处理 UTF-8 文件。但越来越多的工具正在“了解”。如果您正在开发自己的东西,您可能需要研究所有字符串都是 Unicode 的 Python 3。其理念是尽早将所有输入转换为 Unicode(如有必要),并尽可能晚地将它们重新转换为目标编码。有一些工具包可以很好地猜测特定文件的编码(例如, 马克·皮尔格林沙代, 一个港口 Mozilla 的编码检测器)。如果您正在处理未指定编码的文件,这会很好。

CP1252和UTF-8是用于他们上面不同的所有字符<128相同。所以,如果你坚持英语和远离注音符号把这些将是相同的。

大多数的Windows工具将使用任何设置为当前用户的当前代码页,这将默认为1252为美国的Windows。您可以更改到另一个代码页很容易。但UTF-8是不是for Windows的代码页可用选项之一。 (我想这是)。

Windows下的一些用途将理解 UTF-8字节顺序标记在文件的开头。不幸的是,我不知道如何确定这是否会除了努力尝试。

UTF-8支持Windows但不能作为当前代码页。您可以使用UTF-8从它转换为/但你不能设置是当前代码页。

首先不要试图通过设置代码页浪费时间 - 这种做法会提醒你西西弗斯神话 - 使用的代码页你不能真正解决问题,必须使用Unicode

你的唯一真正的解决办法是为构建应用程序为Unicode所以它会使用UTF-16 并转换到/自UTF-8 /缩小操作。这是因为支撑件的fopen读取或写入UTF-8做得比较简单。

对于其他的Windows工具使用UTF-8文件的使用,你不应该知道,因为如果该工具能够与ASCII合作,将使用UTF-8的工作(即使这样也未必能Unicode的区分字符但至少将能够装入/解析文件)。

顺便说一句,你忘了指定你用什么编程语言什么的Windows工具,你考虑使用。

另外,如果你有兴趣洁具更多国际化的东西,请访问我 blog.i18n.ro

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top