Oracle blob欄位中文亂碼

2021-10-05 08:23:59 字數 1925 閱讀 8952

專案中,有些業務資料存放在blob型別的字段中,常遇到的乙個問題就是中文亂碼。本人參與的乙個專案,在windows環境下,中文正常顯示,有一天切換到了linux伺服器上,同樣的**,竟然出現了中文亂碼。亂碼並不可怕,解決方式無非是統一編碼。於是乎,先檢視了一下用的oracle資料庫的字符集

查詢結果是zhs16gbk,也就是對應gbk編碼。又在網上查了下資料,說windows預設gbk編碼,linux預設utf-8,怪不得在window環境下沒事,linux環境下就亂碼了。問題原因搞清楚了,下一步著手解決。 

是改資料庫編碼呢還是改伺服器編碼呢?分析了下,oracle改預設編碼很麻煩而且還可能有隱患,並且我的專案還跟別的專案共用乙個資料庫,安全起見還是改伺服器編碼吧。 

linux系統版本:centos release 6.9 (final)

先輸入命令:locale 

果然都是utf-8,嘗試了下面方法:

/root/.bash_profile檔案的末尾新增以下兩行命令:

export lc_all="zh_cn.gbk"

export lang="zh_cn.gbk"

重新啟動伺服器後,重新輸入命令:locale

很高興的發現都變成了gbk,以為搞定了,結果做了下測試還是亂碼,百思不得其解。又試了些別的法,也不行,無奈先在專案啟動後追加些列印環境編碼的**看看吧:

果然,列印出來的結果還是utf-8

又找了個方法試了試:

修改 /etc/sysconfig/i18n 檔案

修改為:

lang="zh_cn.gbk"

supported="zh_cn.utf-8:zh_cn:zh"

sysfont="latarcyrheb-sun16"

修改完後,執行:source i18n,再測試,成功解決。本以為這樣的問題都能這麼解決的,後來在公司的開發伺服器上又試了一把,結果不好使。

公司伺服器版本:red hat enterprise linux server release 6.4 (santiago)

最後又用了下面的方法:

在/etc/profile檔案的最後一行新增如下內容:

export lang="zh_cn.gbk"

export lc_all="zh_cn.gbk"

問題解決了。

總結,不同的情況多試試,不行就列印出執行環境的編碼方式看看。

adb shell windows系統中文亂碼

參巧 在cmd下 1 chcp顯示936結果,2 chcp 65001 3 重啟adb shell目錄顯示中文還是亂碼。參巧 通過 adb shell 登入到 nook shell 後,列目錄的時候,如果有中文會亂碼。這是因為 nook 輸出是 utf8,而 windows的console 是系統缺...

Ubuntu Rhythmbox 解決中文亂碼

在這裡介紹的是乙個解決方法,修改變數。在終端輸入 gedit profile 在最後加入下面內容 exportgst id3 tag encoding gbk utf 8 gb18030 exportgst id3v2 tag encoding gbk utf 8 gb18030 儲存退出。sour...

解決 Flask sqlalchemy 中文亂碼

當在使用 flask sqlalchemy 操作 mysql 資料庫時中文亂碼或者直接報錯。解決方法如下 from flask sqlalchemy import sqlalchemy db sqlalchemy use native unicode utf8 配置 mysql 預設字元編碼為 ut...