【nls_character】中文字元亂碼問題與字符集的修改
SYS@BALLONTT> select ASCIISTR('你好ab') from dual;
ASCIISTR(' 好ab')
--------------------------------
\FFFD\FFFD\FFFD\FFFD\FFFD\FFFDab
結果顯示中欄位的名字亂碼,”你”字沒有了
首先,考慮系統的字符集
[oracle@bjr1p2 ~]$ echo $LANG
en_US.UTF-8
字符集為UTF-8,支援中文編碼
再來檢視資料庫字符集
SYS@BALLONTT> select * from v$nls_parameters
2 where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
-------------------- --------------------
NLS_CHARACTERSET US7ASCII
資料庫字符集為US7ASCII,此字符集雖然支援中文編碼,但是是使用了單位元組編碼。如果採用單位元組的字符集來儲存中文資訊,資料庫的字符集雖然是US7ASCII編碼,但裡面儲存的資料編碼實際上卻是另外的編碼格式,這種不一致的情況很容易引起問題,建議不要這樣使用。
那如果資料庫的字符集換成其他字符集(如雙位元組編碼的ZHS16GBK)還會出現這種問題嗎?
實驗一下便知道了,我仍然在此資料庫上進行實驗操作,所以將資料庫的字符集由US7ASCII更改為ZHS16GBK。
(資料庫的字符集修改有兩種方法:1.將資料邏輯匯出,重新建庫,在匯入 2.使用命令直接修改。但是,資料庫字符集的修改可能會存在安全隱患,一般不建議進行直接修改)
資料庫字符集的修改:
SYS@BALLONTT> shutdown immediate;
SYS@BALLONTT> startup mount
SYS@BALLONTT> ALTER SESSION SET SQL_TRACE=TRUE;
Session altered.
SYS@BALLONTT> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SYS@BALLONTT> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SYS@BALLONTT> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SYS@BALLONTT> alter database open;
Database altered.
SYS@BALLONTT> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12716: Cannot ALTER DATABASE CHARACTER SET when CLOB data exists
如果報錯,執行如下語句跳過檢查:
SYS@BALLONTT> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
重啟
SYS@BALLONTT> shutdown immediate;
SYS@BALLONTT> startup;
檢視資料庫字符集
SYS@BALLONTT> select * from v$nls_parameters
2 where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
-------------------- --------------------
NLS_CHARACTERSET ZHS16GBK
已經修改為ZHS16GBK
再來測試一下漢字的插入
SYS@BALLONTT> select ASCIISTR('你好') from dual;
ASCIISTR('你好')
\6D63\72B2\30BD
沒有任何問題
ballontt
2013/8/6
---The End---
如需轉載,請標明出處和連結,大謝!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27425054/viewspace-767861/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Ubuntu 字元介面中文亂碼問題Ubuntu字元
- MySQL 字符集與亂碼與collation設定的問題?MySql
- EasyUI 中文亂碼問題UI
- MSSQL中文亂碼問題SQL
- Java 中文 亂碼問題Java
- oracle字元亂碼問題的解決Oracle字元
- 如何在Ubuntu下新增中文字符集支援(解決中文亂碼問題)Ubuntu
- SpringMVC中文亂碼問題SpringMVC
- Python中文亂碼問題Python
- Cookie值中文亂碼問題Cookie
- 解決中文亂碼問題
- 向表中插入中文字元,查詢時亂碼問題字元
- 微信公眾號傳送模板訊息,出現亂碼問題---字元中文編碼問題字元
- ubuntu字元介面的亂碼問題Ubuntu字元
- 中文字元亂碼的解決字元
- Python BeautifulSoup中文亂碼問題Python
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- Java 解決中文亂碼問題Java
- RDSSQLSERVER解決中文亂碼問題SQLServer
- 解決MySQL中文亂碼問題MySql
- ubuntu 中文顯示亂碼問題Ubuntu
- Java,MySQL中文亂碼問題求教JavaMySql
- java處理中文亂碼問題Java
- vscode中文亂碼問題VSCode
- 中文字符集與字元編碼的基礎知識字元
- 如何解決PuTTY中文亂碼的問題
- idea控制檯中文亂碼的問題Idea
- ofbiz中mysql的中文亂碼問題!MySql
- DES加密中文亂碼問題的解決加密
- StreamWriter輸出中文亂碼的問題 (轉)
- CentOS中文亂碼問題的解決方法CentOS
- mysql字符集與亂碼MySql
- SecureCRT遠端登入solaris 10系統,字元介面中文亂碼問題Securecrt字元
- Java GBK 中文亂碼問題分析Java
- 解決plsql中中文亂碼問題SQL
- Java Web開發中文亂碼問題JavaWeb
- 關於中文亂碼問題(總結)