Unicode 计算机如何以正确的编码在屏幕上显示字符?

Unicode 计算机如何以正确的编码在屏幕上显示字符?,unicode,encoding,utf-8,display,gbk,Unicode,Encoding,Utf 8,Display,Gbk,我对计算机中字符的编码感兴趣 当我用visualstudio code打开我的xxx.c时,VS代码如何检测我的文件编码并解释这些“01”序列。此外,visual studio代码(甚至计算机系统)如何根据我的“01”序列文件和字符编码在屏幕上显示字符 谢谢大家! 我也在我的项目中使用中文。有时候,文件编码真的让我抓狂。有时,我正确的utf-8文件(例如,由editA创建)被某个文本编辑器B破坏,该编辑器将其解释为GBK文件,而editA永远无法恢复正确 我搜索了很多,但大多数答案似乎太抽象或不

我对计算机中字符的编码感兴趣

当我用
visualstudio code
打开我的
xxx.c
时,VS代码如何检测我的文件编码并解释这些“01”序列。此外,visual studio代码(甚至计算机系统)如何根据我的“01”序列文件和字符编码在屏幕上显示字符

谢谢大家!

我也在我的项目中使用中文。有时候,文件编码真的让我抓狂。有时,我正确的
utf-8
文件(例如,由edit
A
创建)被某个文本编辑器
B
破坏,该编辑器将其解释为
GBK
文件,而edit
A
永远无法恢复正确

我搜索了很多,但大多数答案似乎太抽象或不相关。我想弄清楚软件和计算机系统(或操作系统)是如何合作完成这项简单但重要的工作的

第一件事,“永远也回不来”:

“软件和计算机系统(或操作系统)是如何合作完成这项简单但重要的工作的!”:它们不这就是问题所在

简史:几十年前,人们使用小字符集。这个想法是一个系统总是使用同一个。简单。每次在系统之间传输文本文件时,都会立即将其转录为本地字符编码。然后是文件交换的全球化和需要以不同编码保存文本文件的系统。没有通用的方法记录编码是什么。1991年出现了巨大的字符集Unicode。语言(VB4、Java)、操作系统API(Win32)、文件系统(NTFS)开始采用它。然而,它的编码(UTF-8、UTF-16)只是文本文件编码使用的更多可能性。许多读取文本文件的程序要么依赖于系统默认编码的旧系统,要么依赖于猜测(“检测”)

在编程世界中,有些语言要求源文件使用特定的编码(比如UTF-8);在其他情况下,工具默认为特定编码(比如UTF-8)。在大多数情况下,提供C或C++实现的工具集将具有一致的规则集。如果还使用IDE或其他形式的项目系统,则可以为整个项目以及某些情况下的特定文件设置编码

因此,唯一的解决方案是只使用适合您的工具并正确配置它们。如果疼,就停止做



旁白:关于编程和默认字符编码,请注意不要被各种语言库使用系统默认字符编码所欺骗,除非这正是需要的。否则,您会给您的用户带来与您遇到的相同的问题。(在爪哇中,用显式的参数避免它。在C和C++库中,编码被组合成区域。但是注意许多系统初始化程序使用默认字符编码。< /p>引用VSCODE,它使用JS查德尔库来猜测。但是,假定UTF-8。我知道Windows 10中有<代码>字体<代码>文件。我不知道操作系统将在什么时候使用哪个
字体文件
,以及这些
字体文件
是如何工作的?谢谢!这完全是另一个主题。字体文件将字符映射到字形的一组绘图参数,直观地表示事物字符。字体文件可能有也可能没有每个字符的字形r您可以使用。应用程序几乎总是使用操作系统提供的工具来绘制文本。由于对总体性能和用户体验的影响,窗口操作系统提供了这些工具。在Win32 GDI API中,低级函数是DrawText。但是,在大多数情况下,应用程序使用标准UI控件,在需要时调用DrawText或等效控件应用程序代码不需要显式修改。