编码:操作系统,键盘输入等

时间:2014-03-08 19:22:54

标签: windows unicode encoding keyboard operating-system

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

1 个答案:

答案 0 :(得分:0)

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。微软的编辑器(以及更多的Windows软件)虽然倾向于在任何带有BOM的Unicode文本文件前加上前缀,这可能会使非BOM感知软件窒息。