码迷,mamicode.com
首页 > 编程语言 > 详细

java 乱码 字符集编码

时间:2018-12-31 19:18:16      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:自动   存储   编码器   出现   转换   根据   兼容   表示   不同的   

程序经常出现乱码怎么办?下面仔细说一下

首先计算机存储的一切都是字节,只认识字节,也就是一串的二进制数字。

而字符的存储是需要先通过字符集编码转换成可存储的“二进制数字”。而出现乱码的原因基本上都是在这个阶段出现的。也就是通过字符集编码转换阶段。比如:‘中’字符想存储到计算机上,需要先通过XX字符编码转换然后存储到计算机上,而在其他计算机(B)上读取的时候,因为计算机内部存储的是二进制,此时B计算机从硬盘上读取到二进制数值通过YY字符编码进行转换,然后显示,此时,如果XX编码与YY编码如果不兼容的话,那么就会出现乱码;如果两套编码兼容,就不会出现乱码。

acsii编码使用7个二进制位对字符编码。因为计算机基本存储单元是字节,所以采用一个字节对字符编码。(1byte = 8bit ,一个字节由8位表示,所以在计算机内部最高位为0,其他7位是编码值)。

ansi编码:为了扩充acsii编码,以用于显示本国语言,不同的国家和地区制定了不同的标准,由此产生了GB2312,BIG5,JIS等各自的编码标准。这些使用两个字节来代表一个字符的各种汉字延伸编码方式,称为ansi编码,又称为mbcs。(Muilti-Bytes Charecter Set,多字节字符集)

unicode:如ansi编码条例中所述,世界上存在着多种编码方式。在ansi编码下,同一个编码值,在不同的编码体系里代表着不同的字。这个问题促使了unicode编码诞生:将世界上所有符号都纳入其中,无论中文、英文、日文等,每个符号都对应一个唯一的编码,大家都使用这个编码表,就不会出现乱码了,这就是unicode编码。缺点:很大的集合,虽然统一了编码,但是效率不高。(例如存储英文的话,前三个字节都是0,最后一个字节才是真正的存储值,浪费空间)

utf-8:为了提高unicode编码效率,出现了utf-8编码。utf-8可以根据不同的编码自动选择编码长短,比如英文字母使用一个字节就够了。utf-8编码是在unicode编码值上通过utf-8编码器再一次的编码得出来的。

base64:把由其他编码存储的符号转换成acsii码。

到这里,如果出现了乱码,相信也会知道怎么解决了吧。
由什么编码集存储的就由什么编码集转换显示。
最好采用utf8编码集。因为通用。

文章有不当之处,欢迎指出。

java 乱码 字符集编码

标签:自动   存储   编码器   出现   转换   根据   兼容   表示   不同的   

原文地址:http://blog.51cto.com/jiaxiaoxu/2337360

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!