java 乱码 字符集编码

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

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

而字符的存储是需要先通过字符集编码转换成可存储的“二进制数字”。而出现乱码的原因基本上都是在这个阶段出现的。也就是通过字符集编码转换阶段。比如:‘中’字符想存储到计算机上,需要先通过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编码集。因为通用。

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

转载于:https://blog.51cto.com/jiaxiaoxu/2337360

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值