上一篇写了charset的一些外围,这一篇查看编码相关的一些实现: 、
首先看的是七位的ascii编码:
可以看到它的实现是就是语言机制所提供的强转,好桑心。 一直以为很神秘。
编码与解码都是这种款式: 强转! 需要注意的就是有时候我们读取文件的时候,出现一个带颜色的问号的来源就在于此。 因为它的逻辑就是这样。
接下来看基于八位的iso的字符编码集的实现:
其逻辑的实现也能看出来,它只能处理一个字节的编解码,因此这就是我们为什么有时候我们在浏览器地址栏输入中文,在后端取不到我们想要的结果。 之所以说有时候,是因为有些浏览器会自动转换编码。 但是我就遇到过没转的。
记录这里的时候,我还不知道iso是针对八位的一个编码。 所以见笑了。
它们的实现依然是强转。 所以这些char啊,byte啊为啥要定义成基本数据类型呢! 并且很多的语言体系,几乎所有的高级语言体系吧,应该都有基本数据类型一说的。 不奇怪不奇怪。
接下来看一个二位的编码了: UTF8
可能是看的稍微久了那么一点有小情绪了嘿嘿。 但是依然可以知道这里编解码实现不再是简单的进行一个强转了。
接下来看的是UTF16,依然是一个两字节的编码:
这里有一些逻辑错乱,因为当时对这个定位不清晰。 它的编解码都是针对uncode字符集,而非字节。
大小端的实现,以及对于与运算,或运算的一个理解。
依然是逻辑错乱导致的一点小疑惑。
以上是关于四个标准编码的一个查看。 它们有一个共性就是,它们在逻辑实现的时候都或多或少的与数字进行对比。 这时因为编码字符集就是与数字集的一个映射。 为什么会牵扯到数学呢? 因为它是一个天生的编码方案,它有自己的标志,有自己的位置,并且伴随着人类文明的发展而发展。 另一个方面,世界是联系的,数学体现的是事物之间最简单,最单一的联系。 适合为其它的事物提供基本的条件。 然后总览一下java中提供了的编码:
最后由于自己的好奇心,非要去看看编码字符集的实现,终于找到一个ascii的和gbk:
反正csdn也不差这点空间嘿嘿,接下来是gbk:
ok,周末愉快! 下周将要进行查看的是:String系列的内容(知道很重要但是一直被耽搁,又不想花太多时间在上面,因为兴趣不大哈哈。因此粗看一下就跳过)以及jvm运行机制(因为网上已经有太多相关的介绍并且很全很详细,这里只是为了自己知识体系的完整性,也是粗看因为主要是查看资料,并且太多高深不是自己能够触碰)以及注解相关的内容。 -----(感觉任务有点重,在实际的工作中在进行适当的调整吧!)
【转自:武汉网站建设公司 http://www.wh5w.com 复制请保留原URL】