Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ошибка перекодирования / 9 сообщений из 9, страница 1 из 1
17.03.2008, 14:09
    #35195256
mik_sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
Люди, кто-нибудь решил эту проблему???

Сервер: 8.3
Кодировка базы: ISO_8859_5
Кодировка клиента: WIN1251

при использовании функции convert на части русских букв (например Ё) вылетает ошибка:

ERROR: character 0x90 of encoding "WIN1251" has no equivalent in "MULE_INTERNAL"

Причем совершенно неважно в какую кодировку конвертировать.
На версии 8.0 таких проблем нет - все замечательно.
...
Рейтинг: 0 / 0
17.03.2008, 16:38
    #35195923
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
написал багрепорт: http://archives.postgresql.org/pgsql-bugs/2008-03/msg00155.php


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
17.03.2008, 18:49
    #35196356
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
Не помню в какой версии, в постгресе сделали строгое конвертирование из одной кодировки в другую.
Например.
В кодировке КОИ8 нет знака номер (№), а в WIN1251 он есть. До определенной версии постгреса этот знак нормально сохранялся в базе, а потом перестал сохраняться, так как знака номер (№) в таблице символов кодировки КОИ8 нет.
Возможно, это и в Вашем случае.

Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
17.03.2008, 19:03
    #35196387
mik_sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
возможно. Но что делать дальше?
...
Рейтинг: 0 / 0
17.03.2008, 19:27
    #35196420
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
mik_smвозможно. Но что делать дальше?
1) править исходники
2) изменить кодировку бд
3) смириться
4) другое :)
...
Рейтинг: 0 / 0
17.03.2008, 20:14
    #35196507
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
в данном случае скорее сего это ошибка в таблицах/функции конвертирования, потому что не работает просто для русского алфавита... без всяких доп. символов.

я тестировал вот эту строку и она НЕ сконвертировалась:
абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
17.03.2008, 20:22
    #35196515
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
Ёшскорее сего это ошибка в таблицах/функции конвертированияВозможно, так оно и есть.
Да прибудет с нами UTF :)
...
Рейтинг: 0 / 0
18.03.2008, 04:41
    #35196778
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
нашёл ошибку, в таблице конвертирования ISO_8859_5 во внутреннее представление отсутствует буква Ё и ё, вот патч для 8.3 на файл src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
*** cyrillic_and_mic.c.org	 2008 - 03 - 18   02 : 16 : 35 . 000000000  + 0300 
--- cyrillic_and_mic.c	2008-03-18 02:19:16.000000000 +0300
***************
***  483 , 489  ****
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa,
  		0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0,
--- 483,489 ----
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 		0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa,
  		0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0,
***************
***  493 , 499  ****
  		0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
  		0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde,
  		0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1,
! 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  	};
  
--- 493,499 ----
  		0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
  		0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde,
  		0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1,
! 		0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  	};
  
кстати символ номера тоже не сконвертируется, я его не патчил так как насколько я понял - для кирилицы во внутреннем представлении convert'а используется... koi8-r... в котором он отсутствует. специалисты в списке рассылки пока молчат :)

ps: да utf решает, только он медленнее и регулярные выражения не работают %) эх.. нет в жизни сщастья... :)


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
20.03.2008, 06:46
    #35202202
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка перекодирования
Мой патч не правильный, я забыл про таблицу перекодировки в обратную сторону %)

Heikki Linnakangas написал правильный патч:
http://archives.postgresql.org/pgsql-bugs/2008-03/msg00200.php

теперь весь русский алфавит правильно конвертируется в ISO_8859_5 и из неё :)


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ошибка перекодирования / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]