JAVA编码

来源:互联网 发布:sql 外键 编辑:程序博客网 时间:2024/06/08 04:04

最近做的项目经常会遇到编码转换的问题,这里总结一下常用的编码,以便以后查阅。

1、ASCII码

ASCII(American Standard Code for Information Interchange, 美国信息交换标准码)是一种单字节8位的编码方式。

总共可表示2^8=256个字符,实际上只用了128个,即0~127位。ASCII有个缺点,就是只能表示英文字母及一些简单的符号,不能表示汉字和复杂的符号。

详细的ASCII码表如下:

JAVA中可以通过以下方式转换ASCII码

(1)整数转ASCII码

char value = (char)0x41;或者char value = (char)65;System.out.println("value="+a)最终输出:value=A

(2)ASCII码转整数

byte value = (byte)'A';System.out.println("value="+value);输出:value=65

 

2、ISO8859-1

ISO/IEC8859-1,又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入96个字母及符号,藉以供使用变音符号的拉丁字母语言使用。

详细的ISO8859-1编码的情况如下图


3、UNICODE

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

Unicode固然统一了编码方式,但是它的效率不高,比如UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。

UCS只是规定如何编码,并没有规定如何传输、保存这个编码。

4、UTF-8

UTF-8:utf(Unicode Translation Format)为了提高Unicode的编码效率,于是就出现了UTF-8编码。Unicode规定世界上每个字符对应的编码号,utf-8定义了如何存储字符,UTF-8使用可变长度字节来储存 Unicode字符,例如ASCII字母继续使用1字节储存,重音文字、希腊字母或西里尔字母等使用2字节来储存,而常用的汉字就要使用3字节。辅助平面字符则使用4字节。

5、UTF-16

UTF-16是Unicode的其中一个使用方式。

UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码。

 

6、GB2312

简体汉字编码,每个汉字及符号以两个字节来表示。基本集共收入汉字6763个和非汉字图形字符682个。

缺点:只能显示简体汉字,而且有些汉字收录不全。

7、GBK

GBK编码,是在GB2312标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。

GBK可以表示简体和繁体汉字,汉字收录比较全面。