我添加了一个函数,该函数从oracle database
返回一个带有阿拉伯字符集的值,
但是当我运行我的程序时,文本框中显示的值是中文或日文字符,如此
"敔瑸潂X"
。要返回的值是阿拉伯字符。 我试图将文本框从右向左更改,但它没有帮助。 我试图将存储的值更改为英语但返回相同的字符。
有什么建议吗?
public void Get_Desc()
{
string oradb = "Data Source=schema;User Id=user;Password=pwd;";
string CommandStr = "F_Get_Office_Desc";
using (OracleConnection conn = new OracleConnection(oradb))
using (OracleCommand cmd = new OracleCommand(CommandStr, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("iCode", OracleDbType.Varchar2).Value = Current_code;
cmd.Parameters.Add("oDesc", OracleDbType.Varchar2, 4).Direction = ParameterDirection.ReturnValue;
conn.Open();
cmd.ExecuteNonQuery();
Current_Desc.Text = cmd.Parameters["oDesc"].Value.ToString();
}
}
答案 0 :(得分:0)
奇怪,通常Oracle.DataAccess.Client继承NLS_LANG值。你读过哪个值?也许您读取了32位值,但应用程序在64位上运行。
尝试创建环境变量NLS_LANG=AMERICAN_AMERICA.AR8MSWIN1256
,因为环境值优先于所有其他设置。
另请尝试NLS_LANG=AMERICAN_AMERICA.AL32UTF8
。
在您的代码中添加
Console.WriteLine(conn.GetSessionInfo().ClientCharacterSet);
打开连接后。什么是输出?