Перевод выполнил Юрий Козлов, очень рад замечаниям по адресу off@tsinet.ru. Чтв Ноя 18 19:09:53 MSK 1999 Сергиев-Посадская LUG spslug.sposad.ru =========== 1999 Jul 21 =========== Josef Balatka, попросил нас не удалять RECODE и выслал мне транслирующую таблицу Czech ISO-8859-2 -> WIN-1250. RECODE больше нет, кроме русского RECODE и так останется в PostgreSQL. Также, он создал немного документации, главным образом относительно RECODE - смотри README.Charsets. =========== 1999 Apr 14 =========== Tatsuo Ishii обновил расширение мультисимвольной поддержки русского языка. Теперь PostgreSQL поддерживает кодировки KOI8-R, WIN-1251, ISO8859-5 и CP866 (ALT). Далее следует короткая инструкция по использованию. Подробное обсуждение мультисимвольной поддержки в README.mb. ПРЕДУПРЕЖДЕНИЕ! Теперь мультисимвольная поддержка русского RECODE объявлена устаревшей и будет удалена из Postgres. Если ты используешь RECODE обдумай переход на мультисимвольную поддержку. Инструкции как подготовить Postgres для мультисимвольной поддержки русского языка. ---------------------------------------------------------------------- Во-первых, нужно сделать резервную копию всех баз данных. Я рекомендую резервное копирование всего каталога Postgres, включая исполняемые файлы и библиотеки - если что ты сможешь все легко восстановить. Сдампь данные: pg_dumpall > dump.db Останови postmaster. Настрой, скомпилируй и установи Postgres. (Я обычно говорю про кодировку KOI8-R, но это только чтобы сделать примеры немного проще; ты можешь использовать любую поддерживаемую кодировку.) cd src ./configure --enable-locale --with-mb=KOI8 make make install Удостоверься что ты сделал резервную копию баз данных. Дважды проверь резервную копию. Я знаю о чем говорю - делай регулярно резервное копирование и пробуй иногда восстановление. Удали каталог с данными (лучше переименуй или перемести его). Запусти initdb, указав первичную кодировку: initdb -e KOI8. Если ты пропустишь кодировку, первичная кодировка будет взята из configure. Запусти postmaster. Создай базы данных: createdb -e KOI8. Еще раз, если ты пропустил кодировку - будет использоваться кодировка по умолчанию. Тебя никто не принуждает использовать одну кодировку для всех баз данных - ты можешь создавать различные базы данных с различными кодировками. Загрузи данные из созданного дампа: psql < dump.db Это все! Теперь ты можешь пользоваться в полной мере мультисимвольной поддержкой. Чтобы использовать мультисимвольную поддержку тебе не нужно делать что-то особенное - просто выполняй свои запросы. Если в клиентской программе нельзя установить кодировку, можно получать данные из базы данных перекодированными. Клиент может попросить Postgres автоматически выполнять преобразование сервер-клиент и клиент-сервер. Есть 2 (два) пути объявить клиентской программе о ее кодировке: 1) клиент явно выполняет запрос SET CLIENT_ENCODING TO 'win'; 2) клиент запускается с установленной переменной среды. Примеры - с помощью sh синтаксиса: PGCLIENTENCODING='win'; export PGCLIENTENCODING с помощью csh синтаксиса: setenv PGCLIENTENCODING 'win' При установленной PGCLIENTENCODING, даже если ты используешь одну кодировку клиента для базы данных, будет пропущен первый вопрос про кодировку базы данных при начальном подключении, так что это хорошая идея установить ее в любом случае. Теперь можно запустить набор тестов и посмотреть мультисимвольную поддержку в действии. Перейди в .../src/test/locale и выполни make clean all test-koi2win =========== 1998 Nov 20 =========== Я расширил поддержку локали, изначально написанную Oleg Bartunov . Теперь ORDER BY (если PostgreSQL настроен с --enable-locale) использует strcoll() для всех текстовых полей: char(n), varchar(n), text. Я включил набор тестов .../src/test/locale. Я не стал включать его в в регрессивные тесты, потому что немногим людям нужна поддержка локали. Подробней про набор тестов читай .../src/test/locale/README . Большое спасибо Oleg Bartunov (oleg@sai.msu.su) и Thomas G. Lockhart (lockhart@alumni.caltech.edu) за подсказки, тонкости, помощь и обсуждение. Oleg.