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



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

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

谢谢!

我在项目中也使用中文。 有时,文件编码真的让我发疯。有时,我由编辑A创建的正确utf-8文件被某些将其解释为GBK文件的文本编辑器B破坏,编辑A永远无法将其正确恢复。

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

首先,"永远无法恢复它":始终使用源代码控制

"软件和计算机系统(或操作系统(如何协同工作以完成这项简单但重要的工作!":他们不是问题所在!

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

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

因此,唯一的解决方案是仅使用适合您的工具并正确配置它们。如果很痛,请停止这样做。


旁白:关于编程和默认字符编码的主题,请注意不要被各种语言库使用系统默认字符编码所欺骗 - 除非这正是需要的。否则,您将给用户带来与您遇到的相同问题。(在Java中,只需使用显式参数即可避免使用。在 C 和 C++ 库中,编码被合并到区域设置中。但请注意,许多系统初始化程序以使用默认字符编码。

最新更新