2013-05-02 7 views
1

У меня есть база данных PostgreSQL, которая использует кодировку символов WIN1252.Как установить кодировку в NpgsqlConnection

При запросе базы данных некоторые записи будут вызывать ошибку при попытке чтения данных, поскольку она пытается преобразовать ее в UTF8. Это происходит на некоторых иностранных именах, содержащих некоторые нелатинские символы.

Ошибка:

ERROR: 22P05: character with byte sequence 0x81 in encoding "WIN1252" has no equivalent in encoding "UTF8" 

Это происходит, когда я звоню Read() на NpgsqlDataReader.

Мое соединение определяется как:

new NpgsqlConnection("Server=127.0.0.1;Port=5432;Database=xyz;User Id=****;Password=****;"); 

Что я могу сделать, чтобы прочитать эти данные с помощью C#?

ответ

5

Мне удалось решить проблему. Невозможно установить свойство в строке соединения или любых свойствах NpgsqlConnection или NpgsqlCommand.

Однако я смог установить значение client_encoding в запросе. Таким образом, сразу же после открытия соединения я впервые выполнил (не) запрос:

set client_encoding = 'WIN1252' 

После этого, любая последующая команда в том же соединении используется надлежащее кодирование и возвращены результаты без жалоб.

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