Re: Bug #659: lower()/upper() bug on ->multibyte<- DB

Поиск
Список
Период
Сортировка
От Tatsuo Ishii
Тема Re: Bug #659: lower()/upper() bug on ->multibyte<- DB
Дата
Msg-id 20020508213001S.t-ishii@sra.co.jp
обсуждение исходный текст
Ответ на Bug #659: lower()/upper() bug on ->multibyte<- DB  (pgsql-bugs@postgresql.org)
Список pgsql-bugs
> > This is not a bug but an expected behavior. Locale support expects an
> > input string is encoded in ISO-8859-1 (because you set locale to
> > de_DE) while you supply UTF-8.
>
> What is the difference between an insert of string and a call to a function with a string argument?

You input "select lower('X')" as ISO-8859-1 encoded, then it is sent
to the backend. The backend convert it to UTF-8. Then lower() is
called with an UTF-8 string input. lower() calls tolower() which
expects the input being ISO-8859-1 since you set locale to de_DE.
This is the source of the problem.

> > select lower(convert('D'), 'LATIN1');
>
> I tried: select lower(convert('X'), 'LATIN1'); -- X is german umlaut A, capital
> but the result was the same:
> ERROR: Could not convert UTF-8 to ISO8859-1

Oops. That should be:

select convert(lower(convert('X', 'LATIN1')),'LATIN1','UNICODE');

It looks ugly, but works.
--
Tatsuo Ishii

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

Предыдущее
От: Thomas Lockhart
Дата:
Сообщение: Re: Bug #660: View name not stored in lowercase
Следующее
От: "Enke, Michael"
Дата:
Сообщение: Re: Bug #659: lower()/upper() bug on ->multibyte<- DB