[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Правильная сортировка, при правильной кодировке
y4eH|/|K
Здравствуйте может вы уже отвечали на этот вопрос, если да укажите плиз.
Вот проблема. Есть таблицы, в них заведены данные. Добавлялись из форм. По умолчанию я так понимаю в кодировке latin1 так как я не изменял ее при сборке пакетов.
Все работает замечательно все ищется правильно все добавляется правильно, но при попытке сортировки таблицы по полю например по Фамилии. В браузере выдает не правильную сортировку то есть Кабачков, Картошов, Глызин, Баранкин, Барышкин ... Ну что то типа того. Мне сказали это от того, что кодировка не такая. set characters пробую соответственно все в вопросиках ну и так далее. Вопрос такой в чем собственно проблема в сортировке. И если изменять уже всю кодировку таблицы то как данные не потерять ...

Ну и сразу к этому вопрос ... можно как то делать универсально чтобы не зависить от того как собрана база какой язык по дефолту стоит ну и так далее, средствами php. Чтобы проект был переносимый ...



Спустя 4 минуты, 2 секунды (15.01.2007 - 17:07) vasa_c написал(а):
Запросы<br>
set names "cp1251"
set names "utf8"
или еще как нибудь
 

устанавливают кодировку клиента
так же кодировки и сравнения могут устанавливаться на уровне БД, таблиц или непосредственное текстовых полей при их создании или в последствии.

Спустя 55 минут, 50 секунд (15.01.2007 - 18:03) y4eH|/|K написал(а):
Эт все понятно что они устанавливают. Но при установке все начинает показывать ????? другими символами, так как данные вводились в базу через формы и уже имеют кодировку я так понимаю latin1. Поэтому просто установкой

//mysql_query("SET character_set_client = 'cp1251';");
//mysql_query("SET character_set_connection = 'latin1';");
//mysql_query("SET character_set_results = 'cp1251';");
//mysql_query("SET character_set_server = 'cp1251';");

Так вот мне нужно именно отсортировать поле. Как это можно сделать. Или придется переконвертить базу или еще как нить только без потери данных. А просто если поменять SET NAMES то все придется набивать заново так как отображается старое уже не так как надо.

Спустя 17 минут, 18 секунд (15.01.2007 - 18:20) vasa_c написал(а):
какая версия mysql ?

Спустя 14 часов, 40 минут, 57 секунд (16.01.2007 - 09:01) y4eH|/|K написал(а):
5 ну там еще с номерками ;)

Спустя 2 часа, 51 минута, 22 секунды (16.01.2007 - 11:52) y4eH|/|K написал(а):
Вот что я нашел по теме

Warning: The preceding operation converts column values between the character sets. This is not what you want if you have a column in one character set (like latin1) but the stored values actually use some other, incompatible character set (like cp1251). In this case, you have to do the following for each such column:
ALTER TABLE t1 CHANGE c1 c1 BLOB; (2)
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET cp1251; (3)

The reason this works is that there is no conversion when you convert to or from BLOB columns.

Делаю выдает данный столбец в формате ???????? и усе данные не изменились

Предположим, что данные лежат в 1251 (реально), но в базе, которая считается как latin1 (то есть типа все работает, кроме сортировки, ибо в базе лежит некое шифрованное НЕЧТО, по нем и сортируется).

Надобно сделать:
mysqldump –default-character-set=latin1 > file.sql
Теперь в файле лежат байтики “как было в БД”, то бишь правильно.
Создаем базу с utf8 (или 1251), в file.sql добавляем SET NAMES cp1251 (говорим, что кормить щас будем 1251 данные), везде где создаются таблицы latin1 меняем на cp1251 (если база в utf8, то на utf8). Запускаем, получаем правильную базу (если приконнектиться НЕ как latin1, конечно).
Далее в /etc/my.cnf:
[mysqld]
init-connect=’SET NAMES cp1251′ (либо при каждом коннекте говорить то же самое ручками).
и все будет работать замечательно, проверено и для utf8 тоже.

Это так же попробывал опять ничего хорошего ?????? и все

В скрипте ставлю set names cp1251 все аброкадабра ...

Может как то надо вкупе делать с какимито параметрами и там и там ...

Mysql на линухе. Но использую я Mysqladmin под виндой, когда делал бэкап то при восстановлении он мне выдавал кодеровку utf8.
Скоро поедит крыша от всего этого :P

Спустя 20 минут, 42 секунды (16.01.2007 - 12:13) Ghost написал(а):
сделай дамп базы и закачай в другую базу с такой же структурой и нужной кодировкой
http://ukrhosting.com/faq.php?id=39


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.