LINUX.ORG.RU
ФорумAdmin

Mysql, кодировка


0

1

На сервере (администрирую не я) установлена версия mysql 5.0.18, кодировка повсюду latin1, но фактически данные хранятся в cp1251.

На клиенте mysql 5.1.66, кодировка utf8.

Как получить данные из таблиц сразу в utf8?

Когда пробую с set names utf8 получаю вывод вида: Òàðà

Когда пробую с set names cp1251 получаю вопросики.

Как быть?

Никак, character-set-server тоже не поможет.

Правильный способ — сменить кодировку всех строк в таблицах. Чтобы не было неправильной перекодировки, делай так:

ALTER TABLE table CHANGE field field BLOB;
ALTER TABLE table CHANGE field field TEXT CHARACTER SET cp1251;

Если захочется, потом уже можно будет

ALTER TABLE table CONVERT TO CHARACTER SET utf8;

baka-kun ★★★★★ ()
Ответ на: комментарий от baka-kun

у меня такая же проблема, но всё, что вы тут порекомендовали не помогло.

mysql> alter table user_group convert to character set utf8;
Query OK, 2 rows affected (0.06 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from user_group;
+-------+---------------+
| ug_id | ug_name       |
+-------+---------------+
|     1 | ????????????? |
|     2 | ????????????  |
+-------+---------------+
2 rows in set (0.00 sec)

что касается cp1251, то ругается на синтаксис хотя вроде всё пишу правильно

mysql> alter table user_group change ug_name text character set cp1251;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set cp1251' at line 1
mysql> 
saidmir ()
Ответ на: комментарий от saidmir

Не понимаю, зачем ты вообще что-то куда-то конвертировал. Тебе, кажется, достаточно было сказать

mysql> \C utf8
Charset changed
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

baka-kun ★★★★★ ()
Ответ на: комментарий от baka-kun

Простите но всё равно не работает

mysql> select * from user_group;
+-------+---------------+
| ug_id | ug_name       |
+-------+---------------+
|     1 | ????????????? |
|     2 | ????????????  |
+-------+---------------+
2 rows in set (0.01 sec)

mysql> \C utf8
Charset changed
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from user_group;
+-------+---------------+
| ug_id | ug_name       |
+-------+---------------+
|     1 | ????????????? |
|     2 | ????????????  |
+-------+---------------+
2 rows in set (0.00 sec)

mysql> 
saidmir ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.