перед созданием соединения
ользую .NET Core 2 с пакетом System.Data.OracleClient, опубликованным несколько недель назад здесь:https://www.nuget.org/packages/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 в строку подключения, но китайские символы по-прежнему не работает.