先吐槽一下!你妹java核心技术卷2第八版,说是在卷一12章有字符编码的教程,书没买,那就下呗,找了半天下了个卷一,一看,12章哪来的字符编码???网上找了下,也没有改良utf-8的信息!好吧,最后,抱着试一试的心态,下了个卷一第七版,果然啊,在这里头,不带这样的吧。。。没事搞什么穿越啊。。。以上各位亲如果有兴趣,可以了解一下,各种坑啊,别和我一样悲剧找半天。
好!今天呢,就给大家科普一下!讲得好,有钱的捧个钱场!没钱的转发一下!- -
在很早以前,大家知道有一个叫ASCII码的东西,他使用7位表达128种字符,英语,当然没有问题,但是,不支持我们的汉字肿么可以,于是,我们的领导表示了强烈的不满并深感遗憾。又于是,科学家们就开发出了unicode,没错,多一字节嘛,就能很轻松的兼容问题了啊。但是,科学家们表示,那我如果经常使用英语,高字节的经常性全0会白白浪费了一倍的资源,这样是不可取的,领导于是说,你要再这样说,我就,深感遗憾。
科学家嘛,并不是都是木讷的,怎么能让领导遗憾呢?万一哪天突然走丢了呢,是吧。于是,他呕心沥血,开发出了UTF-8编码。
UTF-8的设计有以下的多字符组序列的特质:
*单字节字符的最高有效位元永远为0。
*多字节序列中的首个字符组的几个最高有效位元决定了序列的长度。最高有效位为110的是2字节序列,而1110的是三字节序列,如此类推。
*多字节序列中其余的字节中的首两个最高有效位元为10。
如:U+00000000 – U+0000007F: 0xxxxxxx
U+00000080 – U+000007FF: 110xxxxx 10xxxxxx
U+00000800 – U+0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
可变长了,有木有?领导高兴了,有木有?想感谢郭嘉了,有木有?
其实呢,在java内部,是使用UTF-16的形式存储字符的,这样是很简单的。
但是呢,根据上节所说,在jni下面,有两种编码:“改良的UTF-8”和UTF16。UTF16就是双字节的unicode很好懂了,不需要解释。
那改良的UTF-8呢?根据该死的第七版的卷一12章所说,我们在需要向文件写数据时,会使用DataOutput的方法,如writeInt,会写入一个4字节的二进制数。不过,其中有一个方法writeUTF,比较特殊,此方法使用“改良的UTF-8”来写入字符串数据,与标准的UTF-8不同,字符组成的字符串先用UTF-16表示,随后的结果采用UTF-8规则编码。对于高于0xffff的字符来说,改进的编码是不同的。这是为了能够同Unicode代码还没有增长到16位时的虚拟机向后兼容。
由于没有人使用改进的UTF-8代码,所以只能使用writeUTF方法来写字符串以供给java虚拟机使用,例如,要写一个产生字节码的程序。使用writeChars方法用于其他目的。
ok,插曲完毕,后面的文章,会继续jni的内容。
分享到:
相关推荐
本文实例讲述了C#简单判断字符编码的方法。分享给大家供大家参考,具体如下: public static string GetText(byte[] buff) { string strReslut = string.Empty; if (buff.Length > 3) { if (buff[0] == 239 && ...
HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码HTML特殊字符编码
字符编码过滤器 j2ee字符字符编码 字符编码过滤器 字符编码转换 post字符转换
韩文字符编码总表
文档中主要介绍了各类字符集以及相关的字符编码,字符的显示原理,从输入到显现的整个过程,程序中出现的乱码问题以及解决方案
易语言字符编码转换源码,字符编码转换
字符编码查看器是一款非常实用优秀的编程软件。这款软件支持编码之间的相互转换,可以帮助用户快速查看编码等。功能非常强大。需要的朋友可以前来本站下载。 软件介绍 字符编码查看器是一款可以帮助你轻松快速的...
java字符编码监听器
判断字符编码格式代码,用C++编写的如何判断字符编码格式,UTF-8,ASCII等
HTML特殊字符编码大全 HTML特殊字符编码大全 HTML特殊字符编码大全 HTML特殊字符编码大全
中英文字符编码查询 软件介绍: 该软件能快速查询中英文字符的ASCII、区位码、GB2312 码、Big5 码、GBK 内码、Unicode 码、UTF-8 码和 UTF-16 码。体积小、效率高、使用方便、批量转换、即输即得和多进制显示等。...
那什么是字符呢?在计算机领域,我们把诸如文字、标点符号...这就涉及到字符编码的概念了,比如一个字符集有 8 个字符,那么用 3 个二进制位就可以完全表示该字符集的所有字符,也即每个字符用 3 个二进制位进行编码。
也谈计算机字符编码 值得收藏 1) 每种ANSI编码或者说ANSI字符集只规定自己国家或地区使用的语言所需的'字符';比如中文GB-2312编码中就不会包含韩国人的文字。 2) ANSI字符集的空间都比ASCII要大很多,一个字节已经...
字符编码详情 , 讲解字符编码基础!
VB中窗体进程间传递字符消息前的准备环节
字符编码查询,包括中文和英文字符编码快速查询工具,
字符编码之间的转换规则与实现
通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...
Unicode 5.1 字符编码分解表