URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 2129
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."

Отправлено auto_tips , 11-Июн-03 13:43 
MySQL должен быть собран с ключами:
   ./configure --with-charset=koi8_ru --with-extra-charsets=all
Далее, сразу после каждого соединения с базой нужно использовать оператор:
    SET CHARACTER SET cp1251_koi8
Если данные в cp1251 уже в базе, их нужно поместить в базу вновь.


URL:
Обсуждается: http://www.opennet.ru/tips/info/498.shtml


Содержание

Сообщения в этом обсуждении
"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено Nickolay , 11-Июн-03 13:43 
брррр как некрасиво.
а просто запускать демон с default-character-set=cp1251 ???

"Как в MySQL обеспечить правильную сортировку данных в кодиро..."
Отправлено uldus , 11-Июн-03 14:22 
>брррр как некрасиво.
>а просто запускать демон с default-character-set=cp1251 ???

Некрасиво запускать демон с default-character-set=cp1251 под Unix системой.
Пользователям должно быть настоятельно рекомендовано держать базы в koi8-r, не хотят - пусть используют кривые решения.


"Как в MySQL обеспечить правильную сортировку данных в кодиро..."
Отправлено Nickolay , 12-Июн-03 10:24 
>Некрасиво запускать демон с default-character-set=cp1251 под Unix системой.
>Пользователям должно быть настоятельно рекомендовано держать базы в koi8-r, не хотят -
>пусть используют кривые решения.
IMHO это Ваше IMHO.
криво - это заставлять пользователей(клиентов). кажется уже прошел период когда в юниксе были проблемы с ср1251... если ср1251 - это кривизна - то пардон, зачем тогда вообще поддержка ср1251?
это всего лишь мое IMHO.
p.s. вот уже года два-три у нас работает несколько mySQL-серверов с ср1251 и никаких проблем...

"Как в MySQL обеспечить правильную сортировку данных в кодиро..."
Отправлено uldus , 12-Июн-03 19:05 
>криво - это заставлять пользователей(клиентов).

Ориентироваться нужно на запросы лузеров, а на пожелания квалифицированных пользователей. К тому же, под юникс родная кодировка - KOI8-R, и уже только поэтому серверные процессы в системе с KOI8-R окружением должны работать под KOI8-R локалью. А перекодирвка дожна быть настраиваемой и прозрачнойдля клиента (пример, PostgreSQL), а не через кривой хак как в MySQL.

>кажется уже прошел период когда в юниксе

Под юниксом я никогда не буду запускать скрипт работающий с текстом в cp1251.

>это всего лишь мое IMHO.
>p.s. вот уже года два-три у нас работает несколько mySQL-серверов с ср1251
>и никаких проблем...

Пока клиент не появится желающий базу в koi8-r, что тогда ему предложите ? Перекодировки koi8r=>cp1251, в отличие от cp1251=>koi8r в MySQL нет. А вот клиент может оказаться значительнее и важнее всех cp1251 юзеров.


"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено Аноним , 13-Июн-03 10:24 
перекодировка cp1251=>koi8r ? а куда же у вас теряются "лапки", беларуские, българские и украинские символы?

"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено Nikolaev D. , 16-Июн-03 09:28 
>К тому же, под юникс родная кодировка - KOI8-R
Не согласен. Все проблемы решаются раз и навсегда при использовании UTF-8.

"Про Unicode"
Отправлено uldus , 01-Июл-03 10:51 
>Не согласен. Все проблемы решаются раз и навсегда при использовании UTF-8.

UTF-8 не решает все проблемы.

Гланые 2 недостатка unicode:

1. Значительное усложнение. Unicode не "прозрачна", не обладая специальными средствами невозможно уловить содержимое текста, в отличии, например, от koi8-r, которая замечательно подходит для передачи данных в сети. Другая сторона усложнения - необходимость модификации ПО, старые программы так просто с Unicode не заработают.

2. Увеличение объема текста. Если для офисных документов - это почти не заметно, то для текстов передаваемых по сети увеличение объема до 2 раз (для кирилицы UTF-8 - 2 байта, англоязычные пользователи чувствуют себя комфортно используя 1 байтное UTF-8) значительно влияет на трафик и как следствие стоимость и время передачи. Увеличение объема храненимой информации ведет к дополнительным затратам на обработку и чтение данных. Расширенные символы в HTML документах прекрасно представляются в "&...;" нотации.


"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено OlegI , 26-Июн-03 22:30 
Кодировка Koi-8 для баз противопоказана по причине падения производительности при сортировках. Она единственная из всех - нелексикографическая. Т.е. бинарная сотрировка с ней не работает. База должна быть либо в cp1251, либо в utf8. Если же вдруг клинету нужно отдавать в koi-8, то проще использовать перекодировку.
"роднистость" кодировки для ОС это все равно, что "если русский, то должен беспробудно пить водку"

"Как в MySQL обеспечить правильную сортировку данных в кодиро..."
Отправлено uldus , 26-Июн-03 23:07 
>Кодировка Koi-8 для баз противопоказана по причине падения производительности при сортировках.

У программистов читавших хотябы Д. Кнута потери производительности не происходит.


"Как в MySQL обеспечить правильную сортировку данных в кодиро..."
Отправлено FractalizeR , 28-Дек-07 18:51 
А причем тут программисты и кнут, если сортировку выполняет MySQL?

"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено kryser , 28-Июн-03 22:47 
Запусти mysql вот такой строкой:
/bin/sh /usr/local/bin/safe_mysqld --default-character-set=cp1251 &
у меня била таже проблема когда-то и давно уже нет:)

"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено Visual , 16-Фев-06 23:18 
Хелп ! Прблемма с кодировкой в форуме, что уже только не делал, а все равно вместо русских букв знаки вопроса. Я пользуюсь phpmyadmin и сейчас стоит MySQL-кодировка: UTF-8 Unicode (utf8), изменить ее пока у меня невышло. Дело в этом ?

"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено Genia , 02-Окт-06 13:25 
Первый запрос к БД после подключения справится с utf8:
mysql_query("SET NAMES 'cp1251'");

"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено vasilich , 26-Фев-07 20:49 
крыша едит от этих кодировок. програмеры из mysql решили подкинуть гемора

"Как в MySQL обеспечить правильную сортировку данных в кодировке cp1251."
Отправлено Dmitriy , 24-Дек-07 17:28 
у меня похожая проблема,
есть Linux-сервер с локалью koi8-r на нём apache и  mysql собран c --with-charset=koi8r --with-extra-charsets=all, в БД храняться фамилии на русском. При обращении через php в БД sql запросом типа "select name from table order by name asc" сортировка по алфавиту не происходит, точнее частично не происходит - имена начинающиеся на З,В,Ч почемуто идут после У. Пробовал делать всё чего здесь в форуме написали - ничего не выходит. Куда копать?