主要原因:
oracle客戶端的字符集與伺服器端不匹配,需要更改客戶端(instant client)或者伺服器端的字符集
在sql developer中查詢伺服器端的字符集:
select userenv('language') from dual;
結果:因此只要在客戶端設定同樣的字符集即可。
1. 對於windows,在使用者環境變數中設定nls_lang變數即可:
2. 對於linux,在.bash_profile中設定nls_lang變數即可:
nls_lang = "simplified chinese_china.al32utf8"
export nls_lang
oracle服務端字元編碼為: zhs16gbk
oracle客戶端字元編碼為: we8iso8859p1
解決辦法有三種:
(1)修改客戶端登錄檔: 找到oracle安裝註冊項下的nls_lang,將其值改為"simplified chinese_china.zhs16gbk
(2)通過呼叫_putenv函式,在程式中用**設定:
using system.runtime.interopservices;
...[dllimport("msvcrt.dll")]
private static extern int _putenv(string str);
..._putenv("nls_lang = simplified chinese_china.zhs16gbk");
//資料庫操作
_putenv("nls_lang = american_amrica.we8iso8859p1");
(3)通過c#自帶的函式設定環境變數
system.environment.setenvironmentvarible("nls_lang "," simplified chinese_china.zhs16gbk");
//資料庫操作
system.environment.setenvironmentvarible("nls_lang ","american_amrica.we8iso8859p1");
需要注意的是: 第
二、三種利用函式進行設定環境變數的操作必須在資料庫操作的外邊才能生效。
Ajax post亂碼問題解決方案
今天測試乙個ajax元件的時候遇到亂碼問題,在網上找了很多解決方案都未能解決,原因可能我出現亂碼的問題不在傳輸過程,而且是在頁面上就已經出現亂碼了,現象很奇怪,我直接把引數賦值為中文後alert,發現是亂碼,所以不管我怎麼設定和在後台解碼都依然是亂碼。後來找到原因,共分兩點 第一 我的meta標籤設...
python Django 亂碼問題解決方案
亂碼問題 1,插入資料庫亂碼,檔案前加入 import sys reload sys sys.setdefaultencoding utf8 同時保證資料庫介面是utf8的 mysql alter database databasename default character set utf8 co...
中文亂碼問題解決方案
1.接收中文引數亂碼 a.以get方式提交引數亂碼,在server.xml檔案中catelina標籤中新增乙個屬性uriencoding utf 8 b.以post方式提交引數亂碼,在接收引數之前設定request物件的編碼方式 request.setcharacterencoding utf 8 ...