a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 103|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
6、   常见问题
7 |) Z& B: j* O  W; ~. G, v  6.1 通用UTF-8来编码# k! ?/ d/ S$ V
  大量使用国外的开源软件时,UTF-8才是编码界最通用的说话。对英文是单字节、中文是三字节。在大量的英文存在的情形下高效。6 w0 V8 Z7 V9 Q, |$ F
  6.2编码问题时查看
6 {8 W2 i  c! h; S  s  %javahome%/jre/lib/charsets.jar
! `: |# U8 j1 \0 O  6.3 说话的编码8 E, f3 Q' ^) V% c( k; }6 k
  C、C++、Python2内部字符串都是使用当前系统默认编码。
1 b7 V- z! y% x( u  Python3、Java内部字符串用Unicode保留。0 u' c% l, [1 L
  Ruby有一个内部变量$KCODE用来暗示可识此外多字节字符串的编码,变量值为”EUC” “SJIS” “UTF8″ “NONE”之一。$KCODE的值为”EUC”时,将假定字符串或正则表达式的编码为EUC-JP。同样地,若为”SJIS”时则认定为Shift JIS。若为”UTF8″时则认定为UTF-8。若为”NONE”时,将不会识别多字节字符串。在向该变量赋制瘫,只有第1个字节起浸染,且不区分巨细写字母。”e” “E” 代表”EUC”,”s” “S” 代表 “SJIS”,”u” “U” 代表 “UTF8″,而”n” “N” 则代表 “NONE”。默认值为”NONE”。即默认情形下Ruby把字符串当成单字节序列来措置。
2 U+ t0 B0 ~* q2 T4 K/ {  6.4 js的unicode& O3 k9 j, D& @, d1 g  _
  13
. P$ b9 q- W) w  6.5 网页编码7 w4 E: K+ T  S  u
  一个网页要在浏览器中正常显示,需要连结网页文件的编码、网页的meta标签声明(charset 来拟定的其实是encoding编码而不是字符集)、浏览器编码设置是一致的。+ @7 j5 @- A8 B5 p9 i8 q
  6.6 联通乱码) G. E3 L% R: k; ]/ e) \
  在Win下的新建一个记事本文件,输入”联通”两个字之后,保留之后从头打开,发现呈锨氚搽。这是因为GBK编码与UTF8编码发生了编码冲突。* C& U3 Q. ~- z/ ?" X2 D! N
  从UNICODE到UTF8的转换轨则:! Q! r  |$ }8 y% [. u; ?' {
  Unicode UTF-84 ?2 [2 M8 o! F6 m# t! h- n
  0000 – 007F 0xxxxxxx
8 s( d' N$ e! q$ _& P) W  0080 – 07FF 110xxxxx 10xxxxxx
1 {. ]7 ]4 R0 y' v' p; {  0800 – FFFF 1110xxxx 10xxxxxx 10xxxxxx
$ t2 Z6 K5 T0 c! k+ E8 ]( `6 I$ E, \7 t联的Unicode编码是[0x80] [0x54]# k4 V: g$ {7 L, |7 ]& k% \8 \
  通的Unicode编码是[0x90] [0x1A]8 _% ^( T  `+ k% @6 p2 y! ~  s! D6 w
  8054和901A在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。使用第三种转换获得
0 d( T/ |- E4 b  [0xE8] [0x81] [0x94] [0xE9] [0x80] [0x9A],这就是其UTF8的编码。2 B7 {( Z1 c. ]- ~
  新建一个文本文件时,记事本的编码默认是ANSI, 中文的就是GBK编码,而,此时”联通”的内码是:[0xC1] [0xAA] [0xCD] [0xA8]" B/ j# [/ B  B$ u; j
  C1 1100 00019 n8 y( d8 l  a" W* `- q, |& b& R$ V
  AA 1010 1010! d  K* z4 h. j& W
  CD 1100 11011 _. L: [2 ?7 D2 }, Y" d
  A8 1010 1000
4 p: G( @3 T; m5 Z  n: n& t  其中联的两个字节、通的两个字节的肇端部门的都是”110″和”10″,与UTF8轨则里的两字节模板是一致,所以再次用记事本打开时,记事本误认为这是一个UTF8编码的文件。按照反编码获得UNICODE的0x 006A,和0×0368,0×0368这个字符什么也不是,这就是”联通”两个字的文件没有法子在记事本里正常显示的原因。如不美观多几个字的输入话,因为记事本检测到不是及格的uft-8编码的字节转而会采用GBK,乱码又不呈现。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 18:47 , Processed in 0.174847 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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