2016-09-15 2 views
1

У меня есть база данных PostgreSQL, которая использует кодировку UTF8. Я считаю, что это кодировка по умолчанию.Как избежать недопустимой последовательности байтов UTF8 в параметризованных SQL-запросах?

У меня есть приложение с графическим интерфейсом, которое выдает типичный запрос SELECT с предложением WHERE. Запрос параметризуется, и содержимое параметра обычно вставляется конечным пользователем. Значение не читается из текстового файла и т. Д. - оно вставлено в редактирование заметки.

Вот запрос ...

cmd.CommandText = @"SELECT history_id, emplid, displayname 
        FROM ""MAX_HISTORY_IDS"" 
        WHERE searchname ILIKE :searchname"; 

cmd.Parameters.Add("searchname", PgSqlType.VarChar).Value = "Sievert,Jürgen"; 

В приведенном выше коде, значение параметра, Sievert,Jürgen, будет переменная разобран из окна редактирования заметок, или ввод текста и т.д. Это имя также является реальным примером имени, вызывающего этот запрос, чтобы вызвать недопустимую ошибку последовательности байтов UTF8, из Postgre.

Теперь я предполагаю, что кодировка UTF8 в базе данных прекрасна и довольно стандартная для такого контента. Что здесь не так? Является ли кодировка этого текстового параметра не UTF8? Как я могу заставить этот запрос работать, или не подходит кодировка в базе данных?

ответ

1

Я понял. Я использую клиентскую библиотеку DotConnect PostgreSQL. В строке подключения мне просто нужно было добавить Unicode=True. Кажется, все это работает.

Смежные вопросы