我使用.NET Core 2与几周前在这里发布的System.Data.OracleClient包:https://www.nuget.org/packages/System.Data.OracleClient/.NET Core 2 + System.Data.OracleClient。中文字符不起作用
我可以读取数字,日期和普通英文字符。但不是中国人。可能还有很多其他非西方人物。
下面是一个示例程序来说明错误:
using System;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Data.OracleClient;
namespace OracleConnector
{
class Program
{
static void Main()
{
TestString();
return;
}
private static void TestString()
{
string connStr = "Data Source = XE; User ID = testuser; Password = secret";
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = "select 'some text in English language' as a, '储物组合带门/抽屉, 白色 卡维肯, 因维肯 白蜡木贴面' as b from dual";
var reader = cmd.ExecuteReader();
reader.Read();
string sEnglish = reader.GetString(0);
string sChinese = reader.GetString(1);
Trace.WriteLine("English from db: " + sEnglish);
Trace.WriteLine("Chinese from db: " + sChinese);
Trace.WriteLine("Chinese from the code: 储物组合带门/抽屉, 白色 卡维肯, 因维肯 白蜡木贴面");
}
}
}
}
它输出这样的:
English from db: some text in English languageဂ
Chinese from db: ¿¿¿¿¿¿/¿¿, ¿¿ ¿¿¿, ¿¿¿ ¿¿¿¿¿e
Chinese from the code: 储物组合带门/抽屉, 白色 卡维肯, 因维肯 白蜡木贴面
正如你所看到的,从正常码字符中国工作。但不是来自数据库。此外,英文文本中的最后一个字符是一些混乱的东西。我也尝试过相应的Mono nuget包,结果相同。
任何人都有任何线索如何解决这个问题?
编辑:尝试将Unicode = True添加到连接字符串,但中文字符仍然不起作用。