关于编码

今天在公司自己写的接口突然被人找到说接口调用失败!由于我负责的这个服务的接口有一个参数是要求JSONArray格式的,里面会有一些 [ { " 这些字符。所以他们说是是不是要编码,我这边要编码...我就一脸懵逼。我们用的是Resultful风格的Jersey框架的调用方式,这里面应该会有自己的编码和解码的统一格式啊。最后发现原来是通过我们接口返回的信息中,有一个组数据转json报错了。。。这个看异常消息完全能看出的啊!

所以为了不被人忽悠,我自己看了下《深入分析javaweb技术内幕》这本书里的关于java编码格式这一章,下面算是给自己做个总结吧:

为什么要编码?

我们为什么要编码?我们能不能不编码?
要回答这两个问题,我们就需要知道计算机是怎么表示的我们能够理解的符号,也就是我们人类使用的语言。
目前计算机中一个最小的存储单元是---字节(byte),也就是说8个bit,8位二进制的数。那我们就需要把这些字节能够“翻译”成我们理解的字符。那么这时“翻译”就是一个编码的过程。简单的来说就是要用计算机的01这种二进制里映射咱们能够理解的字符。
那人类需要表示的字符太多了,英文字母可能还少点,汉字,阿拉伯,俄文还有一些特殊字符等等。然而一个字节只能代表256个字符。所以为了解决这个矛盾必须要有一个新的数据结构:char,char到byte必须编码。

一些常见的编码格式:

  1. ASCII码 **
    ASCII总共有128个,用一个字节的低7位表示,最高位用来做奇偶校验。031来表示控制字符,如换行、回车、删除等,32126是打印字符,都是键盘输入或者能够显示出来的。
    2.
    ISO-8859-1**
    这个是ISO组织在ASCII码的基础上又订的一个标准。ISO-8859-1涵盖了大多西欧语言字符,应用的较为广泛。但这个仍是单字节编码,所以说总共能标示256个字符。
  2. GB2312
    全称叫《信息技术中文编码字符集》,顾名思义,这套编码是包含汉字的,而且是双字节。他从B0~F7是汉字区,包含了6763个汉字。
  3. GBK
    这个是大家较为常见的编码格式了,全称《汉字内码扩展规范》,是国家技术监督局为Windows95所指定的新的汉字内码规范,这个就是扩展了GB2312,并加入了更多的汉字,编码范围是8140~FEFE,总共23840个码位,它能标示21003个汉字,它的编码是兼容GB2312的。
  4. UTF-16
    UTF-16采用了Unicode编码,采用定长的表示方法,即不论什么字符都可以用两个字节表示。这大大的简化了字符串的操作,这也就是为什么java用UTF-16作为内存的字符存储格式的一个重要原因。
  5. UTF-8
    虽然UTF-16统一采用两个字节来表示一个字符,虽然很简单方便,但是也有其缺点,那就是不论什么都要用两个字节表示,有些字符用一个字节就可以表示却必须还要用两个字节来表示,这样存储空间就会有浪费。然而UTF-8采用了一种变长技术,即会先分一些编码区,让每个编码去有不同的字码长度。不同类型的字符可以由1~6个字符组成
    具体规则如下:
  • 如果是一个字节,最高位为0,则表示说这是一个ASCII字符
  • 如果是一个字节以11开头,则连续1的个数则按时了这个字符的字节数。例如:110*****代表它是双字节UTF-8的首字节。
  • 如果是一个字节以10开始,表示他不是首字节,则需要向前查找才能得到当前字符的首字节。

今天就先总结这么多,接下来会总结在java编程里需要知道的一些编码的知识。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...
    x360阅读 2,506评论 1 20
  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 3,152评论 1 5
  • 1:前提是node环境已经搭建好,可以去node官网下载2:新建一个index.js文件var express =...
    divine_zhouo阅读 259评论 0 0
  • 一树花开 惊艳了春光 泛起涟漪 敲打着心窗 一树花开 妩媚的花香 花姿端庄 云卷一段芬芳 明媚的春光 微风浅唱 轻...
    文山鹿阅读 419评论 55 38
  • 蕗栖 变老是每个人都会经历的事情,虽然作为二十多岁的年轻人不应该有这样的感慨但是我能感受的到变老的孤独。...
    莫畴儿阅读 370评论 0 1