![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Mysql 4.0.45 база в UTF8 на линуксе. Сам линух тоже в UTF8. Проблемы с сортировкой, LOWER(), UPPER() текстовых (CHAR, TEXT...) полей. за collation utf8_* из дистрибутива НЕ НАДО. Посмотрел в сорцы: там нет данных за диапазон русских букв.
Внимание вопрос :) Есть ли у кого готовые таблицы сортировки для русского сегмента UTF8 для мускула и хаутушка как их подцепить? Буду очень признателен, а то счас рассматривается вариант патченья мускула ручками, но ведь народ живет с ним _давно_, должно ж быть пофиксено.
Неактивен

Возможно дело в версии MySQL. Пробовали ставить MySQL 5?
Неактивен
Sorry plz
Разумеется 5.0.45 Очепятался
(( Но проблема осталась: не сортируется, не изменяет регистр. Проверялось из консольного mysql. типа 'SELECT UPPER('приВЕТ'); в ответ псевдографика ![]()
Неактивен

Какая ОС?
Какой делали SET NAMES в консоли перед указанным запросом?
Если linux, то
[rgbeast@elf ~]$ locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC=C
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE=C
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"
LC_ALL=
[rgbeast@elf ~]$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.0.22-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SET NAMES koi8r;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT UPPER('приВЕТ');
+-----------------+
| UPPER('приВЕТ') |
+-----------------+
| ПРИВЕТ |
+-----------------+
1 row in set (0.02 sec)Неактивен
Система настроена в ru_RU.UTF-8 база в геа8 ( d CREATE DB я казал UTF-8, данные в нем же). В select все показывается по русски, НО сортировка не работает, lower/upper я попробовал чтоб не набирать длинный селект
тем не м енее для данных из базы они не работают ![]()
Неактивен

Возможно в базе данные хранятся в неправильной кодировке. Попробуйте сделать дамп и посмотреть действительно ли данные в нем в кодировке UTF-8
Неактивен
Да, Вы правы. Сделал дамп и счас никак не могу понять: в какой кодировке мускул хранит базу. Может кто знает как надо перекодировать? И как потом загнать в базу перекодированные дынные, чтоб и в базе все было правильно?
Неактивен

Пожалуйста посмотрите статьи http://sqlinfo.ru/articles/encoding/
Логика простая - в дампе в начале есть слова SET NAMES имя_кодировки, дамп является хорошим и восстанавливаемым, если
1. SET NAMES в начале дампа совпадает с кодировкой, в которой находится текст в самом дампе (если делаете даип правильной базы, то по умолчанию это UTF8)
2. В описании таблиц задана русская кодировка (DEFAULT CHARSET = имя_кодировки), причем не обязательно, чтобы она совпадала с кодировкой в п.1
Неактивен

Можно сделать преобразование столбцов, в которых хранятся ваши данные, сначала в BINARY (или BLOB), а потом опять в UTF8.
За подробностями обращайтесь к статье Паулюса:
http://sqlinfo.ru/articles/info/5.html
Неактивен
В дампе данные лежат в абсолютно непонятной кодировке (типа "C3 90 C2 xx"). На терминале, который настроен на utf-8 показывает белиберду. Пытался перекодировать в другие кодировки (типа recode) не нашел подходящей. Самое поганое - я не понял что за кодировка и почему мускул хранит данные в ней а не в utf-8 как я заказывал
(( и КАК перебросить данные на другой сервак в правильной кодироваке
(((
Неактивен
Попробуй это
http://sypex.net/
Я поначалу , пока с кодировкми не разобрался, им пользовался.
Неактивен

Если сделать recode utf8..latin1 dump.sql кодировка станет понятной?
Неактивен
Попробовал utf8->latin1. Стало почти понятно. Но! Некоторые символы не перекодировались (перекодировались неправильно) и выскочило сообщение 'Invalid input in step UTF-8..ISO-8859-1'
Неактивен
Страниц: 1