本文共 3259 字,大约阅读时间需要 10 分钟。
[20160325]bbed 中文字符显示的显示问题.txt
--如果使用bbed查看记录存在一个小问题,如果里面的字符包含中文,显示的是乱码,今天正好看一个英文数据库,字符集
--AMERICAN_AMERICA.US7ASCII,发现中文居然可以正常显示,这样如果使用bbed看中文完成可以改变字符集来查看。自己 --在中文数据库测试看看。1.环境:
SCOTT@book> @ &r/ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production$ env | grep NLS
NLS_LANG=AMERICAN_AMERICA.zhs16gbk NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS2.建立测试表:
SCOTT@book> create table tx (id number,name varchar2(20),cr_date date); Table created.insert into tx values (1,'中文测试',sysdate);
insert into tx values (2,'a1234',sysdate); commit ; alter system checkpoint ;SCOTT@book> select rowid,tx.* from tx ;
ROWID ID NAME CR_DATE ------------------ ---------- -------------------- ------------------- AAAWe0AAEAAAAI7AAA 1 中文测试 2016-03-25 10:17:26 AAAWe0AAEAAAAI7AAB 2 a1234 2016-03-25 10:17:37SCOTT@book> @ &r/rowid AAAWe0AAEAAAAI7AAA
OBJECT FILE BLOCK ROW DBA TEXT ---------- ---------- ---------- ---------- -------------------- ---------------------------------------- 92084 4 571 0 4,571 alter system dump datafile 4 block 571 ;3.使用bbed观察:
$ env | grep NLS_LANG NLS_LANG=AMERICAN_AMERICA.zhs16gbkBBED> set dba 4,571
DBA 0x0100023b (16777787 4,571)BBED> p * kdbr[1]
rowdata[0] ---------- ub1 rowdata[0] @8145 0x2cBBED> x /2rnct
rowdata[0] @8145 ---------- flag@8145: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8146: 0x01 cols@8147: 3col 0[2] @8148: 2
col 1[5] @8151: a1234 col 2[7] @8157: 2016-03-25 10:17:37rowdata[20] @8165
----------- flag@8165: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8166: 0x01 cols@8167: 3col 0[2] @8168: 1
col 1[8] @8171: ........ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ col 2[7] @8180: 2016-03-25 10:17:26--可以发现~处显示...,无法显示中文。
4.如果定义export NLS_LANG=AMERICAN_AMERICA.US7ASCII,再测试:
$ env | grep NLS_LANG NLS_LANG=AMERICAN_AMERICA.US7ASCIIBBED> x /2rnct
rowdata[0] @8145 ---------- flag@8145: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8146: 0x01 cols@8147: 3col 0[2] @8148: 2
col 1[5] @8151: a1234 col 2[7] @8157: 2016-03-25 10:17:37rowdata[20] @8165
----------- flag@8165: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8166: 0x01 cols@8167: 3col 0[2] @8168: 1
col 1[8] @8171: 中文测试 col 2[7] @8180: 2016-03-25 10:17:26--补充注意,如果在这个环境下插入中文,会出现乱码?补充测试:
$ env | grep NLS_LANG NLS_LANG=AMERICAN_AMERICA.US7ASCIISCOTT@book> insert into tx values (3,'文化',sysdate);
1 row created.SCOTT@book> commit ;
Commit complete.SCOTT@book> select rowid,tx.* from tx;
ROWID ID NAME CR_DATE ------------------ ---------- -------------------- ------------------- AAAWe0AAEAAAAI7AAA 1 ???? 2016-03-25 10:17:26 AAAWe0AAEAAAAI7AAB 2 a1234 2016-03-25 10:17:37 AAAWe0AAEAAAAI+AAA 3 ???? 2016-03-25 10:24:23 --显示乱码。修改回来:$ export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
SCOTT@book> select rowid,tx.* from tx; ROWID ID NAME CR_DATE ------------------ ---------- -------------------- ------------------- AAAWe0AAEAAAAI7AAA 1 中文测试 2016-03-25 10:17:26 AAAWe0AAEAAAAI7AAB 2 a1234 2016-03-25 10:17:37 AAAWe0AAEAAAAI+AAA 3 ???? 2016-03-25 10:24:23--原来插入的显示正常,但是在英文字符集US7ASCII下插入的显示乱码,这点在以后工作中注意。
转载地址:http://wlzxx.baihongyu.com/