a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 138|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证之Java中编码以及Unicode总结(3); A8 j+ q5 a3 f! V8 q; `
* ISO 8859-5 (Cyrillic) – 斯拉夫语言
1 f+ p# V3 f, Z) B) O; A2 t  * ISO 8859-6 (Arabic) – 阿拉伯语
+ T& N( S* ~* O% @+ W  * ISO 8859-7 (Greek) – 希腊语
2 Q4 F" P* l; d' M5 u) k0 U- {  * ISO 8859-8 (Hebrew) – 希伯来语(视觉顺序)
% r1 h1 C; Z) G- e  * ISO 8859-8-I – 希伯来语(逻辑顺序)
& b8 j/ u: B5 {8 W/ G* b  * ISO 8859-9 (Latin-5 或 Turkish) – 它把Latin-1的冰岛语字母换走,加入土耳其语字母。
, r6 A/ Z1 m/ m! R  * ISO 8859-10 (Latin-6 或 Nordic) – 北日耳曼语支,用来代替Latin-4。
2 R# t. k' y( g+ S8 |2 }; b  * ISO 8859-11 (Thai) – 泰语,从泰国的 TIS620 标准字集演化而来。
8 [, O# }' t6 I& }  * ISO 8859-13 (Latin-7 或 Baltic Rim) – 波罗的语族  Y! s# \$ ?! V1 t9 z" u# w7 f
  * ISO 8859-14 (Latin-8 或 Celtic) – 凯尔特语族; y0 A" g) E( |  O3 X
  * ISO 8859-15 (Latin-9) – 西欧语言,加入Latin-1欠缺的法语及芬兰语重/ m* ~% ^+ |' V( D
  4$ b: \& Y- ^% L) ^) k
  音字母,以及欧元符号。
4 z, o6 C. p) ]9 J/ X, e9 q  * ISO 8859-16 (Latin-10) – 东南欧语言。主要供罗马尼亚语使用,并加入欧元符号。
1 x9 P5 L1 @0 i4 X0 u$ K  2.4.3ISO10046(UCS)编码与Unicode( a( `* ~8 S! `: G+ ~$ L& S: \
  UCS :
! }8 M* d, y$ U1 ^% d  通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的字符编码方式,采用4字节编码。  K) A* O' ~( x6 E
  Unicode:. G  p2 M$ p. C* M0 U
  Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。
) F: v/ I4 z3 t" K; h  m  它是http://www.unicode.org 制定的编码机制,要将全世界常用文字都函括进去。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。但自从unicode2.0开始, Unicode采用了与ISO 10646-1相同的字库和字码,ISO也承诺ISO10646将不会给超出0×10FFFF的UCS-4编码赋值,使得两者保持一致。Unicode的编码方式与ISO 10646的通用字符集(Universal Character Set,UCS)概念相对应,目前的用于实用的Unicode版本对应于UCS-2,使用16位的编码空间。也就是每个字符占用2个字节,基本满足各种语言的使用。实际上目前版本的Unicode尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。9 n- s& }7 g- E
  UTF:
2 O3 Z/ L3 }6 F. C: m' `" {  Unicode 的实现方式不同于编码方式。& X1 h& z/ k. R
  一个字符的Unicode编码是确定的,但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode 编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF)。( ]. H* j* Y/ M* |- O
  UTF-8: 8bit变长编码,对于大多数常用字符集(ASCII中0~127字符)它只使用单字节,而对其它常用字符(特别是朝鲜和汉语会意文字),它使用3字节。
5 N( [- f4 l# [4 _, w  UTF-16: 16bit编码,是变长码,大致相当于20位编码,值在0×0000到
9 R2 `% C- N  r! s* ]  0×10FFFF之间,基本上就是Unicode编码的实现,与CPU字序有关。
1 z/ \: L$ s0 Y5 R1 b  UTF-32:32bit编码,定长编码对应于字符的Unicode表示。
2 w5 m% S/ p9 ^0 [& B1 ~  Unicode big endia:
+ V8 u, C, V- N% d1 R$ p: [. b  在Windows系统中保存文本文件时通常可以选择编码为ANSI、Unicode、Unicode big endian和UTF-8,这里的ANSI和Unicode big endia是什么编码呢?
9 q" Z- q# Y3 s# q# Q' R  UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。
' S  m8 ~2 ^! X$ D7 a  Unicode规范中推荐的标记字节顺序的方法是BOM(即Byte Order Mark)。1 v5 o" u* ?$ r# Q
  在UCS编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。. \8 |5 Y3 ^; @# P; \7 h
  如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,
) w; Q& J7 W- m  w, w) o: u" `  5" |: M1 i8 j; f2 e9 h& d. G
  就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。Windows就是使用BOM来标记文本文件的编码方式的。
. e0 x: A* U) F8 b  2.5 codepage的编码体系7 I( M. O' K: y) s
  codepage 指的是一个经过挑选的以特定顺序排列的字符内码列表,对于早期的单字节内码的语种,codepage中的内码顺序使得系统可以按照此列表来根据键盘的输入值给出一个对应的内码。对于双字节内码,则给出的是MultiByte到Unicode的对应表,这样就可以把以Unicode形式存放的字符转化为相应的字符内码。类似unicode,只是另外一种字符编码方式,注意ASP和SAP中的codepage的区别。, l+ a& \5 N- Y) [; M& Z
  ASP中:
5 K8 S" p7 V  X, n% I; {$ A  CodePage的作用,是决定页面以何种编码方式显示动态内容。当页面被服务器处理之后,页面将以CodePage设定的编码输出到客户端。当然,CodePage的参数需正确,否则,将产生错误信息“CodePage 值无效。指定的 CodePage 值无效。”(事件ID: 0204)。如果CodePage没有设置,则服务器使用默认的CodePage加载到你的Session里面,使用程序代码: Response.Write(Session.CodePage)可以查看你当前使用的CodePage。! l  p1 l: m4 I/ }
  SAP中:最经常我们使用的读取数据的方法就是使用GUI_UPLOAD这个FM.在这个FM中有个CODEPAGE,是用来指定代码页的。/ u0 |; `) J3 K
  Siebel Value$ t* u8 F8 K, i* r( s
  SAP Code page- N2 t( G% R; M" v9 \* E
  Description
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-27 23:53 , Processed in 0.180816 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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