2013-09-05 2 views
1

Я получаю эту ошибку, когда пытаюсь записать в мою постгрессовую БД.Postgresql/npgsql can not write при использовании датских букв

NpgsqlException: ERROR: 22021: invalid byte sequence for encoding "UTF8": 0xe5 0x27 0x2c

Это происходит только при использовании датских букв (æ ø å).

Есть ли способ установить его для использования ex. Unicode?

Я использую Npgsql в проекте C#.

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

+0

Пожалуйста, покажите код, который генерирует это исключение, запрос и переданные параметры. Также были бы полезны версии PostgreSQL и nPgSQL. –

ответ

0
NpgsqlConnection conn = new NpgsqlConnection(
     "Server="+ConnectionInfo +";"+ 
     "Port=5432;" + 
     "User Id=MyAdmin;" + 
     "Password=Test;" + 
     "Database=MyDB;"+ 
     "Encoding = Unicode" 
     ); 

    conn.Open(); 
1

Ваше приложение не работает. Он отправляет закодированные строки 1, как если бы они были utf-8.

последовательность байт ошибки является латино-1 для строки:

å', 

на:

regress=> SELECT convert_from(BYTEA '\xe5272c', 'latin-1'); 
convert_from 
-------------- 
å', 
(1 row) 

Вы должны либо установить client_encoding правильно отражать кодировку текста вы отправляете или (предпочтительно) используете правильные строки unicode C# при работе с nPgSQL.

1

У меня была такая же проблема, когда я копирую и вставляю из документа Word или блокнота в поле текстового поля приложения C#. Простым решением является добавление «Encoding = Unicode» в вашу строку соединения postgresql вашего приложения C#. Как это просто. Я получил облегчение после трехдневного поиска Google.