Я обращаюсь к базе данных any-sql через odbc с помощью c #. Когда я выбираю некоторые текстовые значения из базы данных, умлауты (ö, ä, ü) не отображаются правильно. Я искал здесь https://www.connectionstrings.com/ способ передать форматирование через строку подключения, но я не смог ничего найти.
Должен ли я преобразовывать строки с помощью c # после получения их из базы данных? Как я могу сделать это в C #? Или есть ли способ, которым я могу сказать мое соединение, чтобы автоматически отформатировать его?
Вот кодексанипета
var connectionString = "Driver={SQL Anywhere 17};Host=localhost;Server=myserver;db=mydatabase;uid=dba;pwd=sql;trusted_connection=yes;";
using (var context = SqlContext.Create(connectionString, SqlProvider.AnySql))
{
foreach (var dataRow in context.ExecuteReader("SELECT NAME FROM PERSON"))
{
var name = dataRow.Get<string>("NAME");
Console.WriteLine(name); //Output is "G÷ppel" isntead of "Göpel"
}
}
База данных, с которой я работаю, принадлежит клиенту. У него есть программа, которая использует базу данных. Когда я использую SQL Center для поиска данных, он также говорит «G ÷ ppel», но когда клиент использует свою программу для работы с базой данных, он говорит «Göppel».
Я пытался использовать charste = utf8 (и cp437) в моей строке подключения, но разницы нет. Моя строка подключения теперь выглядит так
"Driver={SQL Anywhere 17};Host=localhost;Server=myserver;db=mydatabase;uid=dba;pwd=sql;trusted_connection=yes;charset=utf8"
Центр SQL сообщает, что тип данных столбца varchar.