C# 文本框返回未知字符

本文关键字:未知 字符 返回 文本 | 更新日期: 2023-09-27 18:36:44

我添加了一个函数,该函数从具有阿拉伯字符集的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();
    }
}

C# 文本框返回未知字符

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

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

也试试 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 .

在代码中添加

Console.WriteLine(conn.GetSessionInfo().ClientCharacterSet);

打开连接后。输出是什么?