【问题标题】:Encodings: OS, keyboard input etc编码:操作系统、键盘输入等
【发布时间】:2014-04-12 00:10:15
【问题描述】:

我试图了解操作系统如何处理不同的编码。我读过 Windows 在内部使用 UTF-16。如果我在文本编辑器中输入文本,它会以 UTF-16 格式保存在 Windows 的硬盘上吗?键入的文本(并临时存储在 RAM 中直到保存)是否以操作系统的内部编码进行编码,除非由具有这种功能的文本编辑器显式转换?如果我创建了一个 UTF-8 SQL 数据库,但在 Windows 上使用我的键盘填充了文本,操作系统是在里面推送 UTF-16 编码的文本还是系统在某些时候意识到它应该是 UTF-8?当我制作网页时,我被告知最好使用 UTF-8。所以我确保我的文本编辑器设置为该值,但我怎么知道来自键盘/操作系统的输入是 UTF-8?

【问题讨论】:

    标签: windows unicode encoding keyboard operating-system


    【解决方案1】:

    Unicode 字符集可以用多种编码表示,其中最主要的是:utf-8、utf-16 和 utf-32。您使用的软件将在内部酌情在不同字符集和编码之间进行转换,但您可能必须自己选择永久存储(文件)的输入和输出编码。

    因为当人们认为 UTF-16 将永远保留 UCS2 时,Windows 创建了一套全新的宽 API,所以大多数 Windows 组件在内部使用 UTF-16。此外,狭窄的 API 通常更受限制,它们根本存在,并且通常使用一些过时的 ANSI 代码页,而不是 UTF-8。因此,如果您的编辑器最初是在 Windows 上开发的,或者使用 Windows 标准控件进行文本显示和编辑,那么您的文本(对您来说大部分是透明的)在内存中将是 UTF-16。

    大多数文本编辑器(包括 Windows 编辑器)仍然默认将文本保存为 UTF-8。尽管 Microsoft 编辑器(以及更多的 Windows 软件)倾向于在任何 Unicode 文本文件前加上 BOM,这可能会使不支持 BOM 的软件窒息。

    【讨论】: