Войти

Показать полную графическую версию : Разные кодировки в MySQL


Red-Hat
29-11-2004, 12:18
Привет всем!

Подскажите пожалуйста как правильно настроить MySQL чтобы правильно обрабатывалось содержимое базы, в разных таблицах которой инфа записна русским языком но в разных кодировках, в частности в koi8r и cp1251?

Если использовать настройки кодировок по умолчанию - то всё отображается нормально но сортировка средствами мускуля обрабатывается неправильно. Если в настроики кодировок в
my.cnf установить одну из кодировок то сортировка начинает работать но теряется работоспособность со второй базой.

ПО: Red-Hat-9+MySQL-4-1-7+php-3.4.3+Perl-5.8.0+Apache-2.0.52
всё взято с официальных сайтов производителей соответствующего ПО.

При установке default_caracter_set = koi8r в my.cnf апач выдает следующую ошибку:

File '/usr/share/mysql/charsets/?.conf' not found (Errcode: 2)

Character set '#7' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index' file

Хотя обе эти кодировки вкомпилированы и указаны во всех конфигурационных файлах и лежет в указанной в ошибке директори.

Заранее спасибо!!!

archy
01-12-2004, 10:53
Попробуй покрутить SET CHARACTER SET=
Лучше для этого глянуть в доках, там подробно написано...

sbum
17-12-2004, 21:24
Проверь конф. файл апача httpd.conf,
MySQL - от туда берет все кодировки

mar
17-12-2004, 22:49
sbum
не дизенформируйте публику, pls:
во-первых, не в russian apache не ставится кодировки страниц по-умолчанию
во-вторых, mysql - СУБД, которая, хотя и используется часто из web-приложений, но может жить и своей личной жизнью (использоваться, скажем почтовиками и т.д. и т.п.) и в httpd.conf даже не заглядывает

sbum
18-12-2004, 14:18
mar
Во первых - я не дизенформирую публику, я ни когда не видел russian apache.
Во вторых - от куда тебе известно, какой apache, стоит у задавшего вопрос!!!
И в третьих - у меня БД вертиться 90% под иврит, и поверь мне, это куда посложнее, чем работать со стандартными кодировками.

И в заключении - у меня такая-же была ошибка, на страницу выдавало все в иероглифах, пока в конф. не прописал кодировки иврита!!!

mar
18-12-2004, 16:15
повторяю: mysql может жить и без апача
Проблему с кодировками mysql, ежели обратиться к документации, по-дефолту решают так, как уже написал archy
В заключение - небольшая заметка от Alexander Voropay
Русские кодировки и сортировка в MySQL (http://www.opennet.ru/base/dev/rus_locale_mysql.txt.html)
Для правильной работы ORDER BY и GROUP BY сервер MySQL должен знать текущий набор
символов. К сожалению, версии 3.х и 4.х MySQL могут иметь только _один_ charset на
все базы одновременно. Задается в /etc/my.cnf:

[mysqld]
default-character-set=koi8_ru

Проверить можно так:

mysql> show variables like 'character_sets' ;
mysql> show variables like 'character_set' ;

В этом случае все символьные поля _во_всех_ таблицах будут храниться в KOI8-R. Для
того, чтобы работали клиенты ODBC из под Windows необходимо, чтобы первым SQL
оператором в Windows-приложении была команда:

SET CHARACTER SET cp1251_koi8 ;

Тогда включится перекодировка "на лету". Hа сервере будет KOI8-R, а на клиенте
Windows-1251 и все сортировки будут работать. Эту же команду можно прописать в
MyODBC 3.5х "SQL command on connect" (STMT=), она выполнится автоматически.

Другой вариант -- не использовать KOI8-R, а хранить базы в Windows-1251 и сообщить
об этом серверу, прописав в /etc/my.cnf:

[mysqld]
default-character-set=cp1251
В заключение - ссылки на документацию (http://dev.mysql.com/doc/mysql/en/Charset-defaults.html)

archy
20-12-2004, 22:16
sbum
Видимо эти жестокие проблемы с кодировакми мешают вам прочитать вопрос ;)




© OSzone.net 2001-2012