conversion problem

Поиск
Список
Период
Сортировка
От Andreas Pflug
Тема conversion problem
Дата
Msg-id 41DADE6E.2000903@pse-consulting.de
обсуждение исходный текст
Список pgsql-odbc
When trying to insert strings with German umlaute (e.g. "täglich") into
a text or varchar column, the server throws the message
    invalid byte sequence for encoding "UNICODE": 0xe4656c


This results from ResolveOneParam not converting the string to UTF-8.
 From debugging I found that ipdopts->parameters[param_number].SQLType
contains 0xffff, instead of something sensible for PGType=0x19 (text).

The attached patch works as hotfix for me, but is certainly only a
workaround for a problem buried deeper because SQLType seems bogus to me.

OTOH, I don't understand why the switch(param_pgtype) was invented at
all (the original patch I posted more than a year ago didn't have it),
because any string coming from the app will probably need conversion to
UTF-8 anyway.

Regards,
Andreas

Index: convert.c
===================================================================
RCS file: /usr/local/cvsroot/psqlodbc/psqlodbc/convert.c,v
retrieving revision 1.121
diff -u -r1.121 convert.c
--- convert.c    30 Jul 2004 21:08:12 -0000    1.121
+++ convert.c    4 Jan 2005 17:49:29 -0000
@@ -2621,6 +2621,7 @@
                 case SQL_WCHAR:
                 case SQL_WVARCHAR:
                 case SQL_WLONGVARCHAR:
+                case (Int2)0xffff:
                     if (SQL_NTS == used)
                         used = strlen(buffer);
                     allocbuf = malloc(WCLEN * (used + 1));



В списке pgsql-odbc по дате отправления:

Предыдущее
От: innenka innenka
Дата:
Сообщение: error de ODBC
Следующее
От: Pailloncy Jean-Gerard
Дата:
Сообщение: iodbc & OpenBSD