a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 112|回复: 1

[考试辅导] Oracle技术:Oracle客户端显示乱码问题

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
看下面演示与剖析:   SQL> select * from nls_database_parameters;) ]# Y$ m( D5 s: H. P$ S
  PARAMETER                      VALUE
0 @. p+ z4 [6 a: D/ E  ------------------------------ ------------------------------6 }: D6 A0 l" Y* Z9 q
  NLS_LANGUAGE                   AMERICAN# d. N# ^1 x6 h5 g% ^3 @
  NLS_TERRITORY                  AMERICA6 S  w# \% [0 `9 n+ y+ A
  NLS_CURRENCY                   $
1 V# t4 W8 R# [) t' w* m% f  NLS_ISO_CURRENCY               AMERICA
: ^8 p, `  _+ r2 `9 S: j7 M4 \  NLS_NUMERIC_CHARACTERS         .,* x# i, Y, _3 L
  NLS_CHARACTERSET               AL32UTF8
; N# I9 s: g6 P9 f  NLS_CALENDAR                   GREGORIAN
& ?8 T& f' `  o; T3 F( Z1 {7 X  NLS_DATE_FORMAT                DD-MON-RR" l+ K) k. f2 O. t( ~
  NLS_DATE_LANGUAGE              AMERICAN4 t  F" o8 m8 B, F5 k
  NLS_SORT                       BINARY9 S9 A' H& b. d- k" _+ m
  NLS_TIME_FORMAT                HH.MI.SSXFF AM
- ~% e* D. L2 Y$ D) Q* r  PARAMETER                      VALUE
: ]1 J9 H# J# B" C* P+ {. r7 L, n* s  ------------------------------ ------------------------------ NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM8 z5 K: c3 V/ h- G: U1 M
  NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR$ i# ^' q  @: p8 I. @
  NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR, V6 s/ Q* K/ ^4 e
  NLS_DUAL_CURRENCY              $/ L* V" E# e$ A. u& f# [# f
  NLS_COMP                       BINARY+ }$ W3 Q9 R; L$ ^4 c; C
  NLS_LENGTH_SEMANTICS           BYTE
$ a# M) O+ k; j; Y" {  NLS_NCHAR_CONV_EXCP            FALSE8 ]7 _3 D, o/ J8 n" l0 i& W
  NLS_NCHAR_CHARACTERSET         AL16UTF16
, g2 |! W: U; q# Y$ M0 ^8 D/ u
7 r4 \' p' w1 m7 I  NLS_RDBMS_VERSION              9.2.0.4.0
回复

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:20 | 显示全部楼层

Oracle技术:Oracle客户端显示乱码问题

</p>  20 rows selected.' M1 j2 T/ C0 j  j
  windows客户机上:3 I" @3 }1 @# J9 L4 S" g
  H:UsersLuoTaoyang>chcp. Q3 N! `' n' T! e  t
  勾今世码页: 936* }6 z9 C4 A% c* k9 {8 B
  H:UsersLuoTaoyang>set NLS_LANG=American_America.ZHS16GBK
% a* m1 h/ Q8 U6 L/ U+ w1 l) H+ {  SQL> DESC chartest;
: N! f  M, F( A0 R2 N2 C  Name                                      Null?    Type----------------------------------------- -------- ----------------------------+ u3 F$ L8 k8 e4 k4 L
  ID                                                 NUMBER(38)
9 c" L. z; [! @+ c7 n7 j+ h% z4 k: f0 M, c  NAME                                               VARCHAR2(20)
, j$ `; L! o  ]% e  SQL> insert into chartest values(1,'123你好吗ABC');
3 j' E& `4 l. _' B! y9 H  1 row created.
( u" w0 D8 u# P. }9 C/ w- k  SQL> SELECT * from chartest;+ ^0 A( M$ k+ ^5 `3 V' @' P9 Y1 h
  ID NAME
* h1 Q; Z) N2 `( y4 t: m  ---------- ----------------------------------------  k# g( [& L! O
  1 123你好吗ABC
, j. ~  X6 W1 u/ A5 l* F  SQL> select id,dump(name,1016) from chartest;
/ _- Q, `( ]8 Q- F8 ^1 }! g2 _  ID
" N/ l- a  C( E, C  c  ----------
6 F$ E; W1 V0 G1 d7 p7 K  DUMP(NAME,1016)
$ t( @9 ^1 a! ?2 V+ E  --------------------------------------------------------------------------------5 m9 k% X* R, [( c, Y$ D
  1
: f' l' A: ~* ]5 T* Q0 p, O  Typ=1 Len=15 CharacterSet=AL32UTF8: 31,32,33,e4,bd,a0,e5,a5,bd,e5,90,97,41,42,43
2 l, L% S! t( V8 q  #‘123你好吗ABC’在ZHS16GBK字符集下16进制代码为:31 32 33 C4 E3 BA C3 C2 F0 41 42 43,之所以跟Oracle存储的分歧时因为客户端字符集(ZHS16GBK)与Oracle主字符集(AL32UTF8)分歧,Oracle在底层发生字符集转换的原因。8 A; G4 W) @( e) Z' F) P- q
  H:UsersLuoTaoyang>set NLS_LANG=American_America.AL32UTF8, o2 T# X; {, V- |5 p; [# ^
  SQL> select * from chartest;
! J3 S' P: R9 }  N  ID NAME
6 q" T0 r  i  J4 v: T2 X  ---------- --------------------
. w# ]5 N; ^2 T  1 123浣犲ソ鍚桝BC' x5 Q7 A0 B6 O3 \& f+ x
  #呈锨氚搽是因为此时Oracle客户端字符集与Oracle主字符集不异,Oracle不贰生字符集转换。但在windows下依然用字符集(ZHS16GBK)显示。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-27 06:37 , Processed in 0.226061 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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