java源码解析之charset(二)

    上一篇写了charset的一些外围,这一篇查看编码相关的一些实现: 、

     首先看的是七位的ascii编码: 

    《java源码解析之charset(二)》

    可以看到它的实现是就是语言机制所提供的强转,好桑心。  一直以为很神秘。 

《java源码解析之charset(二)》

    编码与解码都是这种款式: 强转! 需要注意的就是有时候我们读取文件的时候,出现一个带颜色的问号的来源就在于此。 因为它的逻辑就是这样。 

    接下来看基于八位的iso的字符编码集的实现:

《java源码解析之charset(二)》

    其逻辑的实现也能看出来,它只能处理一个字节的编解码,因此这就是我们为什么有时候我们在浏览器地址栏输入中文,在后端取不到我们想要的结果。 之所以说有时候,是因为有些浏览器会自动转换编码。 但是我就遇到过没转的。 

《java源码解析之charset(二)》

    记录这里的时候,我还不知道iso是针对八位的一个编码。   所以见笑了。 

《java源码解析之charset(二)》

    它们的实现依然是强转。    所以这些char啊,byte啊为啥要定义成基本数据类型呢!   并且很多的语言体系,几乎所有的高级语言体系吧,应该都有基本数据类型一说的。 不奇怪不奇怪。 

    接下来看一个二位的编码了:     UTF8

《java源码解析之charset(二)》

《java源码解析之charset(二)》

    可能是看的稍微久了那么一点有小情绪了嘿嘿。 但是依然可以知道这里编解码实现不再是简单的进行一个强转了。 

    接下来看的是UTF16,依然是一个两字节的编码:

《java源码解析之charset(二)》

《java源码解析之charset(二)》

《java源码解析之charset(二)》

    这里有一些逻辑错乱,因为当时对这个定位不清晰。 它的编解码都是针对uncode字符集,而非字节。 

《java源码解析之charset(二)》

《java源码解析之charset(二)》

    大小端的实现,以及对于与运算,或运算的一个理解。 

《java源码解析之charset(二)》

    依然是逻辑错乱导致的一点小疑惑。 

 以上是关于四个标准编码的一个查看。   它们有一个共性就是,它们在逻辑实现的时候都或多或少的与数字进行对比。 这时因为编码字符集就是与数字集的一个映射。  为什么会牵扯到数学呢?  因为它是一个天生的编码方案,它有自己的标志,有自己的位置,并且伴随着人类文明的发展而发展。   另一个方面,世界是联系的,数学体现的是事物之间最简单,最单一的联系。   适合为其它的事物提供基本的条件。 然后总览一下java中提供了的编码:

《java源码解析之charset(二)》

 

《java源码解析之charset(二)》

    最后由于自己的好奇心,非要去看看编码字符集的实现,终于找到一个ascii的和gbk:

《java源码解析之charset(二)》

《java源码解析之charset(二)》

《java源码解析之charset(二)》

《java源码解析之charset(二)》

    反正csdn也不差这点空间嘿嘿,接下来是gbk:

《java源码解析之charset(二)》

《java源码解析之charset(二)》

 

    ok,周末愉快!   下周将要进行查看的是:String系列的内容(知道很重要但是一直被耽搁,又不想花太多时间在上面,因为兴趣不大哈哈。因此粗看一下就跳过)以及jvm运行机制(因为网上已经有太多相关的介绍并且很全很详细,这里只是为了自己知识体系的完整性,也是粗看因为主要是查看资料,并且太多高深不是自己能够触碰)以及注解相关的内容。     —–(感觉任务有点重,在实际的工作中在进行适当的调整吧!) 

 

    原文作者:java源码分析
    原文地址: https://blog.csdn.net/qq_36285943/article/details/80211902
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞