Oracle 生僻字亂碼解決方案

chenoracle發表於2018-04-03

Oracle 生僻字亂碼解決方案

 

Oracle 生僻字亂碼解決方案”(此+夕)【suǒ】字亂碼,無法正常顯示(變成問號);

生僻字“Oracle 生僻字亂碼解決方案”(此+夕)(suo)ZHS16GBK字符集下預設無法正常顯示;

測試將生僻字型別由varchar2改成nvarchar2,同時使用utl_raw.cast_to_nvarchar2函式可以在資料庫里正常顯示;

Oracle 生僻字亂碼解決方案

select * from t1;

Oracle 生僻字亂碼解決方案

Oracle 生僻字亂碼解決方案

Oracle 生僻字亂碼解決方案

資料庫字符集如下:

select * from nls_database_parameters;

Oracle 生僻字亂碼解決方案

T1表結構如下:

Oracle 生僻字亂碼解決方案

A欄位為VARCHAR2型別

http://tool.chinaz.com/tools/unicode.aspx
---將生僻字生成對應的unicode編碼

Oracle 生僻字亂碼解決方案

select utl_raw.cast_to_varchar2('3C54') from dual;

Oracle 生僻字亂碼解決方案

select utl_raw.cast_to_nvarchar2('3C54') from dual;

Oracle 生僻字亂碼解決方案

---測試varchar2型別無法正常儲存生僻字Oracle 生僻字亂碼解決方案

truncate table t1;

alter table t1 modify (a nvarchar2(100));

insert into t1 values('?',1);

select * from t1;

Oracle 生僻字亂碼解決方案

update t1

   set a =

       (select utl_raw.cast_to_nvarchar2('3C54') from dual)

 where b = 1;

select * from t1;

Oracle 生僻字亂碼解決方案

 

---測試nvarchar2型別可以正常儲存生僻字Oracle 生僻字亂碼解決方案

truncate table t1;

alter table t1 modify (a nvarchar2(100));

insert into t1 values('?',1);

select * from t1;

Oracle 生僻字亂碼解決方案

update t1

   set a =

       (select utl_raw.cast_to_nvarchar2('3C54') from dual)

 where b = 1;

 

select * from t1;

Oracle 生僻字亂碼解決方案

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2152540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章