dotNETcsharp

C# Learning:文本文件的编码

2020-02-14  本文已影响0人  月银秋

在编程时,为了保存设置、导出导入数据等等,我们常会接触到储存文本文件、写入文本文件等各种需要。比如用到File类(System.IO.File)的各种静态方法读文件:

string value = File.ReadAllText("abc.txt");

在使用的时候你可能会奇怪这个方法传的第二个参数encoding,如:

string value = File.ReadAllText("abc.txt", System.Text.Encoding.UTF8);

这个encoding也就是所谓的编码。这篇文章就解释一下编码的作用,并简述以指定编码读写文本文件的过程。

我们得先明确一点:文本文件也是二进制数的形式。很多书或者老师都会说:“文件分为文本文件和二进制文件两大类。”其实这个说法我认为是完全没道理的——文本文件明明也是以二进制形式储存的(我们都知道计算机只能储存二进制数),凭什么不是二进制文件了呢?
好,同样地,所谓 string 类型也就是一串数字(我们都知道, string 类型最终的实现方式是 char 数组,而 char 本身就是数字)。

于是,这些数字就需要一个方式对应到文字才能被人们所识别。这个对应方式就是所谓的编码。在 C# 中, string 所使用的编码是 UCS2 。

因此,读文件的操作就是,按照 UCS2 与文件制定的编码(如 UTF-8 、 ANSI 等等)相对应关系的表,读出文件中的数字,并转换到 UCS2 中对应的数字,储存到内存中(具体过程由于各个编码字符占用空间问题不同等等,是比较复杂的,这里就简单介绍一下);写文件则反之。在打印到屏幕上时,则根据字体库进行。

上一篇 下一篇

猜你喜欢

热点阅读