c#文本框返回未知字符?

时间:2016-03-01 00:02:50

标签: c# oracle

我添加了一个函数,该函数从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();
    }
}

1 个答案:

答案 0 :(得分:0)

奇怪,通常Oracle.DataAccess.Client继承NLS_LANG值。你读过哪个值?也许您读取了32位值,但应用程序在64位上运行。

尝试创建环境变量NLS_LANG=AMERICAN_AMERICA.AR8MSWIN1256,因为环境值优先于所有其他设置。

另请尝试NLS_LANG=AMERICAN_AMERICA.AL32UTF8

在您的代码中添加

Console.WriteLine(conn.GetSessionInfo().ClientCharacterSet);
打开连接后

。什么是输出?