文本在内存中的编码(3)——乱码探源(6)

摘要:探讨了 String 到 byte[] 的转换,并结合之前的 new String 作了综合分析。

先讲个小故事,虽然跟主题有点不太相关哈:

唐朝诗人李绅,身为官员,脾气暴躁,瞧不起信教的,尤其鄙视装逼之僧人,动不动就对他们拳脚相加。曾扬言:“我可以接见他们,要能答出来还好,要是答不出来,我弄死他!”有一回一个和尚来跟他宣传因果报应,李绅问:“阿师从哪里来,到哪里去呢?”僧答:“贫僧从来处来,到去处去。”李绅当时就急了,撸起袖子,亮出了手腕:“我去年买了个表!”

来自知乎问答“古人是如何「装逼」的?”,略有改动。
继续阅读“文本在内存中的编码(3)——乱码探源(6)”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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