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();
}
}
奇怪,通常 Oracle.DataAccess.Client 继承NLS_LANG值。您阅读了哪个值?也许您读取了 32 位值,但应用程序在 64 位上运行。
尝试创建环境变量NLS_LANG=AMERICAN_AMERICA.AR8MSWIN1256
因为环境值优先于所有其他设置。
也试试 NLS_LANG=AMERICAN_AMERICA.AL32UTF8
.
在代码中添加
Console.WriteLine(conn.GetSessionInfo().ClientCharacterSet);
打开连接后。输出是什么?