文本在内存中的编码(2)——乱码探源(5)

摘要:深入探讨了 String 的构造,编码间的转换以及字节流,字符流等。

在前面我们探讨了 String 是什么的问题,现在来看 String 从哪来的问题。

继续阅读“文本在内存中的编码(2)——乱码探源(5)”

文本在内存中的编码(1)——乱码探源(4)

摘要:文本在内存中的编码以及 String 类型的本质。

让我们从一个故事开始说起。话说北大是很有哲学传统的,当你准备踏进北大校门时,连门卫都会连问你三个终极哲学问题:

你是谁?你从哪里来?你要到哪里去?

那么这与我们的问题又有何关系呢?我觉得理解内存中的编码的关键在于理解 String 类型,因此我们也来探讨一下 String 的前世今生:String 是谁(什么)?String 从哪里来?String 到哪里去?

当我们能够清晰地回答这三个终极问题时,对文本在内存中的编码也算理解得差不多了。

继续阅读“文本在内存中的编码(1)——乱码探源(4)”

引入编码信息的一些实践——乱码探源(3)

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

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

继续阅读“引入编码信息的一些实践——乱码探源(3)”

确定文本文件的编码——乱码探源(2)

摘要:介绍了如何去确定一个文本文件所使用的编码,特别地以记事本保存“联通”为例进行了深入分析。

在上一篇中,探讨了文件名编码以及非文本文件中的文本内容的编码,在这里,将介绍更为重要的文本文件的编码。

继续阅读“确定文本文件的编码——乱码探源(2)”

文件,文本文件以及编码——乱码探源(1)

摘要:介绍了文件名在操作系统中的编码,以及一些非文本文件中的文本内容所用的编码。

在前面的字符集编码系列中,已经探讨了几大主要的字符集编码。在此基础之上,这里将进一步探讨编码的应用及乱码的根源,我们先从基本的文件说起。

继续阅读“文件,文本文件以及编码——乱码探源(1)”

字符集与编码(九)——GB2312,GBK,GB18030

摘要:关于 GB2312,GBK,GB18030 编码的一些介绍,还有区位码,国标码,机内码间的转换关系。

前面的一些篇章更多谈论了 Unicode 的相关话题,虽然也有提到 GBK 等编码,但都没细说,这里打算系统说一下。GB 系列包括 GB2312,GBK,GB18030。

继续阅读“字符集与编码(九)——GB2312,GBK,GB18030”

字符集与编码(八)——ASCII 和 ISO-8859-1

摘要:简单介绍了 ASCII 和 ISO-8859-1 两个常见的字符集(编码)。

在前面其实也谈到了 ASCII 了,但并没有很具体,作为一个完整系列的一部分,还是有必要谈一下,也作为后面讨论的一些基础。

继续阅读“字符集与编码(八)——ASCII 和 ISO-8859-1”

字符集与编码(七)——BOM

摘要:本文讨论了 Unicode 中的 BOM 及与 BOM 紧密相关的端法(endian)问题。

在前一篇的最后,留下了一个问题,即 string.getBytes(“UTF-16”) 会在开头多出两个字节”FEFF”来,Unicode 中称之为 BOM,接下来就让我们一起来了解有关 BOM 的知识,在此之前我们需要说说有关端法的知识。

继续阅读“字符集与编码(七)——BOM”

字符集与编码(六)——getBytes 方法及乱码初步

摘要:本文主要讲述 string.getBytes() 方法,分析了系统缺省编码的各种陷阱,并针对测试中出现的乱码作了初步的分析,对代码页的概念也进行了介绍。

在前一篇里我们谈了 Unicode 的代码单元及 string.length,现在接着前面的讨论继续谈 string.getBytes() 方法并对乱码的产生作初步分析。

继续阅读“字符集与编码(六)——getBytes 方法及乱码初步”

字符集与编码(五)——代码单元及 length 方法

摘要:本文讲述了 Unicode 中的代码单元这一概念,并以 java 为例,阐述其对 string.length 方法的影响,并结合 junit 做了一些具体的测试。

在前一篇章中已经谈了不少 Unicode 中的重要概念,但仍还有一些概念没有提及,一则不想一下说太多,二则有些概念也无法三言两语就说清楚,本文在此准备谈一下代码单元及由此引发的一些话题。

继续阅读“字符集与编码(五)——代码单元及 length 方法”