修改Oracle資料庫中亂碼問題

2021-04-15 01:40:34 字數 1592 閱讀 9105

乙個同事使用windows作業系統中文環境安裝完10g以後,因為工作需要需要使用日文的作業系統。相應的資料庫也應該是日文。這時候資料庫中預設的為中文的字符集,因為安裝資料庫的時候預設的字符集是根據系統而來的。改過作業系統的語言設定以後,oracle10g內部出現亂碼。

一般情況下這種的最好該一下登錄檔的字符集(1)。 然後重建乙個日文字符集的資料庫就可以解決問題。

假如是空資料庫,那麼可以通過(1,2)來實現。而不用重新建立資料庫

解決辦法

1. 修改登錄檔的字符集資訊

在登錄檔的hkey_local_machine/software/oracle裡有三個需要修改

hkey_local_machine/software/oracle

hkey_local_machine/software/oracle/home

修改其下的nls_lang引數為japanese_japan.ja16sjis

重新啟動庫,整個庫就變成日文的了。

2.檢視系統配置資訊

select * from sys.props$ 可以檢視系統配置資訊

可以更新系統資訊

update   sys.props$   set   value$='ja16sjis'   where   name   =   'nls_characterset';   

update   sys.props$   set   value$='ja16sjis'   where   name   =   'nls_characterset' 

3.然後更新列資訊

查詢字符集的id 和name

select nls_charset_id(value) nls_charset_id,value nls_charset_name

from v$nls_valid_values

where parameter = 'characterset'

order by nls_charset_id(value)

865 zht16big5

832 ja16sjis

然後更新 列等

update sys.props$

set value$ = 'ja16sjis'

where name = 'nls_characterset'

select charsetid from sys.col$

where charsetform=1

update sys.col$

set charsetid=832

where charsetform=1

update sys.argument$

set charsetid=832

where charsetform=1

update sys.collection$

set charsetid=832

where charsetform=1

update sys.parameter$

set charsetid=832

where charsetform=1

update sys.result$

set charsetid=832

where charsetform=1

spring mysql架構中資料庫亂碼問題

不想看問題描述的直接看解決辦法。我們採用spring mysql做專案,在寫完repository測試時,發現插入資料庫的漢字都是亂碼。網上查是資料庫編碼問題,有的建議配置資料來源時令url jdbc mysql localhost 3306 solawdb?useunicode true char...

oracle資料庫中字元亂碼

1.1 88.152 os已安裝中文包,以下確認os層面中文是否可以顯示 1.2 88.153 os沒有安裝中文包,以下確認os層面中文無法顯示 1.3 確認os層面登入88.152伺服器,檢視 oracle資料庫中中文字元是否正常顯示 1.3.1.88.152確認服務端字符集 1.3.2.確認os...

Oracle資料庫中文亂碼

字符集是oracle為適應不同語言文字顯示而設定的。用於漢字顯示的字符集主要有zhs16cgb231280 zhs16gbk us7ascii和utf 8等。字符集同時存在於伺服器端和客戶端。伺服器端字符集是在安裝oracle時指定的,字符集登記資訊儲存在oracle資料庫字典的v nls para...