Мне нужно отобразить некоторые данные из Oracle. Но Адресное имя содержит специальный символ типа «Č, Ć, Š, Đ, Ž» и т. Д. Эти специальные символы отображаются в базе данных правильно, но когда я пытаюсь получить значения из базы данных с помощью C#, я получаю это от DataReader:Чтение таких знаков, как Č, Ć, Š, Đ, Ž, от Oracle
- для Č, я получаю Э.
- для č, я получаю è
- для Ĉ, я получаю Æ
- для Ĉ, я получаю æ
- для Ž, я получаю \ u008e
- для ž, я получаю \ u009e
- для š, я получаю \ u009a
Что мне нужно сделать, чтобы получить от DataReader такое же значение, как значение из базы данных? Вчера я не нашел ответа на google, поэтому решил попросить здесь.
Кто-то, пожалуйста, помогите.
Я использую C# и Visual Studio 2015. Мне просто нужно выбрать строки из базы, я не могу обновлять или вставлять значения. Это мой код:
private OracleConnection _connection;
private OracleCommand _command;
public List<Address> GetAddressList()
{
string query = "SELECT id, name FROM address";
_command = new OracleCommand(query, _connection);
OracleDataReader dataReader = _command.ExecuteReader();
List<Address> addressList = new new List<Address>();
while (dataReader.Read())
{
Address address = new Address
{
id = dataReader["id"].ToString(),
Name = dataReader["name"].ToString()
};
addressList.Add(address);
}
dataReader.Close();
return addressList;
}
Какой из них вы используете? (например, ODP.NET, управляемый драйвер ODP.NET, OraOLEDB). Каково ваше значение «NLS_LANG»? –
Я использую управляемый драйвер ODP.NET, а значение NLS_LANG - American_America.WE8ISO8859P1 –
. Набор символов базы данных - 'WE8ISO8859P1'. Этот набор символов не поддерживает такие символы, как Č, Ž, š, см. [ISO-8859-1] (https://en.wikipedia.org/wiki/ISO/IEC_8859-1). Если вы не используете тип данных NCHAR, перенесите свой набор символов базы данных на что-то еще, что вы не можете вставить или выбрать такие символы. –