引入字符集编码信息的一些实践--乱码探源(3)

摘要: 介绍了两种引入编码信息的实践, 变相引入及外部指定.

前面说到, 文本文件中没有编码信息, 导致了各种混乱, 那么, 最关键的就是要指定好所用的编码信息. 具体地讲, 有以下一些途径.

变相引入

什么是变相引入呢? 其实本质与前面提到的一些"文件头"信息是类似的.

xml

我们来看看 xml 文件的例子, 你通常能在最开始看到这样的一行:

<?xml version="1.0" encoding="UTF-8"?>

那么这里面, encoding 指明的就是所用编码的信息了. 可是, 等等!! 为了得到这一编码信息, 我得先读取这一文件;可要正确读取文件, 我又要先知道编码信息!

这成了一个鸡生蛋, 蛋生鸡, 又或者说是先有鸡还是先有蛋的问题了.

怎么破呢? 考虑这一行信息所有字符都是 ASCII 中的字符, 那么我们可以先使用最基础的 ASCII 去读取它开头的一些信息, 获取到这一编码信息后, 再次用这一编码去读取文件即可.

ASCII 可谓是这样一个始祖鸟或者始祖蛋一样的存在.

可以动动手做些实验, 先建立一个 xml 文件, 比如就叫 foo.xml

foo.xml

继续阅读