a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 113|回复: 0

[专业语言] Java认证之Java中编码以及Unicode总结(1)

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证之Java中编码以及Unicode总结(1)
( k$ T1 h+ i) J/ D$ Q- Q 基本概念& L1 V. T7 C6 `* n9 x
  bit 位只能是0或者1& S4 G5 A5 D* V$ R9 I/ ?
  byte 字节一个字节是8位,1 byte=8 bits 计算机表示的基本单位0 b; l0 P' Y5 k' I+ u4 R6 r
  KB,MB,GB,TB,PB是以1024与byte进行换算
) A/ g, A3 ]2 [- |2 H, Q$ X  进制 用符号进行计数 十进制、二进制、八进制(011)、十六进制(0xFF): X+ n7 n  b, u) t3 {6 y0 @) n0 x
  字符文字和符号的总称
1 \8 X7 d2 m/ f3 {' w  1、2 X# o- _, V& R3 |: |, x1 y6 H
  0 0×00 0000,0000  D7 m7 z! o+ N  p9 [1 d
  1 0×01 0000,0001
. G8 T. _; f; n  2 0×01 0000,00102 C7 z2 b6 i! U: y/ V
  127 0×7F 0111,1111
8 T( n7 s) R% u( w9 i$ S  -128 0×80 1000,0000! I5 K. `, _$ t
  -2 0xFE 1111,1110$ M  }7 [# p  W, o, n! T
  -1 0xFF 1111,1111
1 p* n9 c- j% a) {. u. M" G  以补码的形式表示的二进制编码。) A  k  o/ S5 }4 h4 B, b
  -2的表示,2=0000,0010,反码1111,1101,补码=反码+1=11111110- p/ Y0 ]# }+ ]
  1111,1110表示的就是1111,1110-1=1111,1101,取反就是0000,0010也就是2,所以就是-2; p* w- s/ }: r! `8 A
  2、/ D, u, p5 b, ]: n; W
  字符集和编码7 W; }- u( }1 j8 r8 Y1 v
  2.1字符(Character)
1 i  S' O! @2 `* e  字符(Character)是文字与符号的总称,包括文字、图形符号、数学符号等。
5 |; _0 o4 K3 J+ w  2.2字符集(Character Set)
; s3 j5 J: t$ \1 b6 B# t: a  一组抽象字符的集合就是字符集(Character Set)。字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。字符集的子集也是字符集。
% N2 m; D( l! ~: w. D! e7 P4 m  计算机要处理各种字符,就需要将字符和二进制内码对应起来,这种对应关系就是字符编码(Encoding)。制定编码首先要确定字符集,并将字符集内的字符排序,然后和二进制数字对应起来。根据字符集内字符的多少,会确定用几个字节来编码。每种编码都限定了一个明确的字符集合,叫做被编码过的字符集 (Coded Character Set),这是字符集的另外一个含义。通常所说的字符集大多都是指编码字符集(Coded Character Set)。
& n6 t5 t1 @; s8 U- [) J' j  1
5 i' L- I6 A4 l9 L0 m  2.2.1 ASCII字符集
; k# _1 `) O5 F  ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于罗马字母表的一套电脑编码系统。由美国国家标准局(ANSI)制定。1 ~) s9 c# M$ F: f! K9 d
  7位,可以表示2^7=128个字符。在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。 7位编码的字符集只能支持128个字符,为了表示更多的欧洲常用字符对ASCII进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共 256字符。
& U9 \' V. o8 F4 x" A+ X4 A  ASCII扩展字符集比ASCII字符集扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。6 y5 x9 U: e, J0 @
  2.2.2 GB2312 字符集3 I) e8 g4 @8 O6 T' Y
  GB2312又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原中国国家标准总局发布,1981年5月1日实施。在中国大陆和新加坡获广泛使用。GB2312收录简化汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共 7445 个图形字符。其中包括6763个汉字,其中一级汉字3755个,二级汉字3008个;包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。! P+ z: R4 B: y/ ]
  GB2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。各区包含的字符如下:01-09区为特殊符号;16-55区为一级汉字,按拼音排序;56-87区为二级汉字,按部首/笔画排序;10-15区及88-94区则未有编码。9 d" }& l# C/ y* {
  两个字节中前面的字节为第一字节,后面的字节为第二字节。习惯上称第一字节为“高字节” ,而称第二字节为“低字节”。“高位字节”使用了0xA1-0xF7 (把01-87区(88-94区未有编码)的区号加上0xA0),“低位字节”使用了0xA1-0xFE (把01-94加上0xA0)。. @$ {1 N9 w3 k
  以GB2312字符集的第一个汉字“啊”字为例,它的区号16,位号01,则区位码是1601,在大多数计算机程序中,高字节和低字节分别加0xA0得到程序的汉字处理编码0xB0A1。计算公式是:0xB0=0xA0+16, 0xA1=0xA0+1。5 E) z+ U9 d4 V0 I
  2.2.3 GBK 字符集
& n! T4 Z5 c  {7 k  F  GBK全名为汉字内码扩展规范,英文名Chinese Internal Code Specification。K 即是“扩展”所对应的汉语拼音(KuoZhan11)中“扩”字的声母。GBK 来自中国国家标准代码GB 13000.1-93。GBK: 汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号, 21003个汉字及提供了1894个造字码位。[(GBKH-0xB0)*0x5E+(GBKL-0xA1)]*(汉字离散后每个汉字点阵所占用的字节)
# o3 Q' r- K! ~7 K2 f9 M& e  GBK是GB2312的扩展,是向上兼容的,因此GB2312中的汉字的编码与GBK中汉字的相同。另外,GBK中还包含繁体字的编码。2 i) t. ~) ^8 S3 [5 N
  GBK中每个汉字仍然包含两个字节,第一个字节的范围是0×81-0xFE(即129-254),第二个字节的范围是0×40-0xFE(即 64-254)。GBK中有码位23940个,包含汉字21003个。
7 R# w  i; ?9 Z  27 U+ h+ g. ~; I2 C  a; T: K4 d
  2.2.4 BIG5字符集
$ Q7 @, x$ W" D2 M3 M  又称大五码或五大码,1984年由台湾财团法人信息工业策进会和五间软件公司宏碁 (Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大众 (FIC)创立,故称大五码。Big5码的产生,是因为当时台湾不同厂商各自推出不同的编码,如倚天码、IBM PS55、王安码等,彼此不能兼容;另一方面,台湾政府当时尚未推出官方的汉字编码,而中国大陆的GB2312编码亦未有收录繁体中文字。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-12 20:41 , Processed in 0.306394 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表