`

一、我对java中编码的理解(摘)

    博客分类:
  • JAVA
 
阅读更多

1. 编码的产生
对电脑而言,只认识0,1; 而现实世界是由各种符合组成,要想让计算机解释现实世界,就必须建立一套现实世界中的符号 和 计算机能处理的符号之间的对应关系,这个对应关系就是编码

2. 在一个编辑器中,当我们在键盘上敲入一个字符时,在该编辑器上就会显示对应的字符,这个过程用计算机执行步骤来解释大致如下:
输入字符 –> 编辑器根据设定的编码格式把字符编成01格式 -> 编辑器再按编码规则对01解码–> 显示字符

3.几种常见的编码格式
1. ASCII码:
计算机中最早的一套编码格式,采用7位二进制表示一个常见的字符,我们知道,计算机是按照字节来处理数据的,一个字节8位,因此用一个字节就可以表示一个 ASCII字符,且还有一个位空位,规定最高位不用,常见的把最高位设定为0。 7位二进制最多可以表示128个字符(2的7次方),ASCII码只能表示常见的英文字符,数字,和少量的符号(没办法,谁让计算机是人家老美先发明的 啊,优先考虑本土语言,理解理解)
注: 由于ASCII最早定义,使用广泛,使得之后出现的新的”字符“(不是汉字喔)编码都尽量和它兼容

2. iso-8859-1:
尽管ASCII应用广泛,但是由于它定义的字符太少,即使对于同是使用字母语言的国家也不够用,更别说我们汉字啦,西欧许多国家使用拉丁语言,其中的很多 字符ASCII编码都不认识喔,这当然会让它们不爽啦,总不能因为这个问题让那些国家的人不使用电脑吧, 于是ISO/IEC就推出了另外的一套编码标准ISO-8859-1. 这套标准完全和ASCII兼容,它使用8位二进制表示一个字符 —--- 刚好一个字节,其中最高位是0时的解释和ASCII一样(这样不就完全兼容啦,兼容很好理解吧),但最高位是1时则用于定义其它字符,这样就在保证和 ASCII兼容的同时又扩展了ASCII,可以多表示字符啦

3. GBK编码
光有字母语言国家的编码就可以么?, 可以啊,好好学习英语啊, 要不你看不懂啊,不想学?,那就不玩啊,呵呵,当然不会啦,对于中国,韩国,日本等这些国家,推出了一种新的编码GBK码, 在编码上GBK采用单双字节混合的方式,它也兼容ASCII喔,具体GBK怎么个编码,你查看资料啦, 这里重点关注的是编码的演化,提供的是思路哈

4. Unicode
Unicode是为了打破这种编码的各自为政,带有强烈地域性的标示而推出的一种编码格式,目的是要达到世界的大同,大同好啊,方便交流啊,就是晚了点, 计算机一出现就出来多好,就没了现在让程序员头疼的编码转来转去的麻烦了,恩,看来有界限的人心是会带来麻烦的,好了,啰嗦了这么多,才算真正引入正题, 为什么会出现乱码,如何解决乱码

4. 揭示web中乱码的病因
比如说现在有两个人,张三 和 make分别来自中国和美国,现在他们访问同一台j2ee服务器,他们都向服务器发送了一条消息
张三: 嗨,我是张三
Make: hello, I’m make
假如张三发送的信息采用的编码格式是GBK, make的是ASCII, 对于浏览器而言,留言器没有把发送的信息采用的编码格式告诉给web服务器(之前的浏览器没提供这个功能,又是地域性的见识啊,现在最新版的不知道有没 有),web服务器不知道你发过来的信息编码格式啊,怎么解释呢,没办法只好提供个默认的吧,恩还是用iso-8859-1吧(毕竟java也是老美搞出 的啊,没办法),英语的没问题,web服务器能听懂,毕竟大家都说英语嘛,并且make对web服务器而言,懂得字母还少了点呢; 汉语的就不行了,就好比一个人只懂汉语,另一个人只懂英语,怎么交流啊,可以交流?那就只好”~!@#¥%“, 这就是java中乱码的病因吧

5. 如何避免乱码的产生
知道了病因,对症下药就好啦,
1. 让浏览器明确指定信息的编码格式, 这个不行啦,程序员干涉不了啦,这不是你的问题啦,不知道现在的浏览器是否已提供这种机制啊,请知道的朋友明示:?
2. 明确采用GBK编码处理请求的数据啊
3. 因为一般的浏览器可以解析多种编码格式,我们的web响应内容,最好指定编码格式喔,这个大家都知道啦
4. 不知道那些国外的站点是如何处理中文的,请大师们开始啊

注: 以上是个人理解,错漏之处难免,欢迎抓虫

分享到:
评论

相关推荐

    深入分析Java中的中文编码问题

    编码问题一直困扰着开发人员,尤其在Java中更加明显,因为Java是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍Java中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别...

    Java中编码方式和Unicode知识总结

    此文档为Java中编码方式和Unicode知识总结,对了解学习Java编码的讲解很全面清楚!

    Java 中的中文编码问题

    深入分析 Java 中的中文编码问题(1) - Java综合 - Java - ITeye论坛.mht

    java使用URLDecoder和URLEncoder对中文字符进行编码和解码

    主要介绍了java 使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    阿里Java的编码规范

    Java、编码规范、Java编码规范、阿里巴巴、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里...

    华为JAVA编码规范

    华为JAVA编码规范,有不少可以借鉴的地方~

    tlv的java编码和解码

    java的TLV包的编码和解码,能够对Tag Length Value对应的值进行编码和解码。包内包含jar包和源码包,还有一个java写的带有详细注释的Demo

    用java修改文件的编码

    用java修改文件的编码

    编码规范 华为编码规范 JAVA 华为编码规范 JAVA

    华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA

    游程编码 JAVA 代码

    对二值图像进行游程编码并构造哈夫曼树进行哈夫曼编码

    Java安全编码标准_PDF电子书下载 带索引书签目录_完整版

    根据自己的需要,找到自己感兴趣的规则进行阅读和理解,或者在实际开发中遇到安全问题时,根据书中列出的大致分类对规则进行索引和阅读,也可以通读全书的所有规则,系统地了解java安全规则,增强对java安全特性、...

    获取文件编码格式(纯JAVA代码,绝对对你有用)

    java 识别文件的编码格式 读取文件的编码 utf-8 gbk gb2312 java 编码 java 获取文件编码格式 java 乱码查找

    java程序员开发必备之java编码规范

    代码规范相当重要. 代码规范提高软件代码的可读性 , 使得开发人员快速和彻底的理解新代码. 好的代码风格不仅会提高可读性 ,而且会使代码更健壮 , 更为...本书为chm格式的,希望对大家学好java的编码规范有所帮助……

    Java编码规范

    为使开发项目中所有的JAVA程序代码的风格保持一致,增加代码的可读性,便于维护及内部交流,使JAVA程序开发人员养成良好的编码习惯,有必要对JAVA程序的代码编码风格做统一的规范约束。本文档定义了我公司软件开发...

    Java编码规范.doc

    JAVA编码规范完全教程,内含国内主流大型JAVA项目开发编码详细规范说明,及国际大型公司JAVA编码规范详细说明,及编码的注意事项和因为不规范编码方式而可能产生的代码BUG,本文档是JAVA专业化编程的一把利器。

    Java_编码规范Java_编码规范

    Java_编码规范Java_编码规范Java_编码规范Java_编码规范Java_编码规范Java_编码规范Java_编码规范Java_编码规范

    java db 省市区编码表

    修改资源中某位兄弟的,为了做一个java 的桌面程序,运行好使。

    java编码格式(对常见的java中文乱码作出分析及提出解决方案)

    java编码格式问题,对常见的java中文乱码作出分析及提出解决方案

    java 编码规范

    java 编码规范java 编码规范java 编码规范java 编码规范

    Java编码规范 Java编码规范

    Java编码规范Java编码规范Java编码规范Java编码规范Java编码规范Java编码规范Java编码规范Java编码规范

Global site tag (gtag.js) - Google Analytics