伺服器端的編碼是
C# 語法讀取出來的亂碼
如何讓它正確顯示而不是亂碼呢?
補充:如何用c#取得字串是什麼編碼方式嗎?
2022/01/03 補充:
我發現打開 Sql Plus 有些也是亂碼...
是用Oracle
--------------------------------
2022/01/03 13:11
--------------------------------
補充2022/01/03 15點15分: 我試著 create一個table 之後,char(50)格式,再次select 之後,發現剛剛create的中文字變成了亂碼 (?w?w) 我原本INSERT INTO色的中文字是"安安",請問該如何解決呢???
尼克要先將我的電腦設定和伺服器端的編碼相同可以正確看見編碼後再進行轉換對嗎?
我電腦(客戶端) 撈出 伺服器(伺服器端) 看見是 "???" 代表我也看不見正確的編碼是嗎?
確認Oracle編碼
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
-- or
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET');
-- or
SELECT USERENV('LANGUAGE') FROM DUAL;
C# 編碼方式程式修改方式:
System.Environment.SetEnvironmentVarible("NLS_LANG ","修改為編碼格");
查詢出來是 US7ASCII
System.Environment.SetEnvironmentVarible("NLS_LANG ","US7ASCII");
這樣對嗎?
// 連接字串
string connString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.XXX.XXX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)));Persist Security Info=True;User ID=XXX;Password=XXX";
try
{
//測試:通過DataReader簡單查詢
using (DbConnection con = new OracleConnection(connString))
{
con.Open();
using (DbCommand com = con.CreateCommand())
{
com.CommandText = "SELECT * FROM 資料表";
using (DbDataReader reader = com.ExecuteReader())
{
while (reader.Read())
{
Console.Write($"{reader["ID"].ToString()}---" +
$"{reader["NAME"].ToString()}---");
Console.WriteLine();
}
}
}
Console.WriteLine("查詢完畢!"); ;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadKey();
尼克
目前亂碼的顯示
你測試看看
C#操作Oracle数据库中文乱码 US7ASCII字符集 (解决方案)
我以前都沒用過這一個編碼 US7ASCII
接下來就是設定client端的NLS_LANG,只要與DB Server相同,中文顯示就會正確了
尼克
我的登錄編輯程式找不到路徑:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 裡面的 NLS_LANG
只在這個路徑
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_OraClient11g_home1 裡面找到 NLS_LANG
該改後重開機登入還是無效
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_OraClient11g_home1 裡面找到 NLS_LANG
64位元regedit在這裡沒錯,你的Oracle是那一個版本?
尼克
這個版本
select * from v$version
你既然使用Oracle SQL Developer查詢看到是正常嗎?
尼克
因為伺服端查詢出來是
TRADITIONAL CHINESE_TAIWAN.US7ASCII
我也將機碼改為
TRADITIONAL CHINESE_TAIWAN.US7ASCII
還是不能正常顯示
我沒辦法了,看看其他幫友是否有其它方式!
你是用ODAC的安裝元件是嗎?64位元32位元?
新手不付責任詢問 :
1.資料庫內的資料在使用資料庫管理器查看時,是否正常(會不會是資料本身就有問題?)
2.電腦是Windows系統的話,本機的非Unicode語言有沒有設定正確?
我發現打開 Sql Plus 有些也是亂碼...
補充: 我試著 create一個table 之後,char(50)格式,再次select 之後,發現剛剛create的中文字變成了亂碼 (?w?w) 我原本INSERT INTO色的中文字是"安安",請問該如何解決呢???
若直接執行 Select '中文' From Dual 會有什麼結果呢?