русский в latin1_swedish_ci???

kos

Новичок
русский в latin1_swedish_ci???

стоит phpBB в базе кодировка latin1_swedish_ci, но форум работает нормально.
Ни SET NAMES, ни iconv, ни чего похожего на ручную перекодировку в коде не нашел.
Сделать корректный дамп неполучается (pma, консоли нет).
 

vovanium

Новичок
Юзай Sypex Dumper 1.0.8, как раз для таких случаев, им же можно и поправить кодировку. Иначе кроме проблем с дампом стандартными способами будет проблема с сортировкой.
 

kos

Новичок
vovanium
проблему решил mysqldump корректно сделал, и восстановилось нормально
Но непонятно как такое вообще работает. И увидеть русский текст нигде кроме самого форума не удалось, в просмоторшеке перебрал все возможные кодировки, и перекодирования в phpBB тоже не нашел (может плохо искал кто-нибудь знает оно там есть?)
 

kos

Новичок
Переформулирую вопрос
есть таблица A - сравнение latin1_swedish_ci
PHP:
mysql_connect("localhost","root","");
mysql_select_db("test");
mysql_query("SET NAMES latin1");
$res_var=mysql_fetch_array(mysql_query("SELECT * FROM `A`"));
echo $res_var["text"];
нормально выводит русский и с SET NAMES и без него, но увидеть русский в pma не получается
В таблице B - сравнение cp1251_general_ci
Без SET NAMES cp1251 выводятся вопросы, а в pma все нормально
Вопрос:
1) если из таблице A с SET NAMES latin1 нормально выводится русский, то почему в pma его нет.
2) почему с cp1251 нужно делать SET NAMES, а latin1 работает без него.
Может я чего-то непонимаю?
 

440hz

php.ru
kos

грубо есть две вещи.

1. кодировка хранения.
2. кодировка сравнения при сравнении, сортировках и т.д.

все крутиться вокруг того как mysql понимает кодировки и как их преобразовывает одну в другую.

ПМА то же выдает соответствующие установки при коннекте. надо мотреть что он там выдает и как настроен.

я в принципе делаю уже давно так:

character_set_client = utf8

character-set-server = utf8
default-character-set = utf8
default-collation = utf8_general_ci
collation-server = utf8_general_ci

и не парюсь на счет кодировок вообще.

dev(root)>/usr/local/libexec/mysqld --version
/usr/local/libexec/mysqld Ver 4.1.15 for portbld-freebsd5.4 on i386 (FreeBSD port: mysql-server-4.1.15)
 

kos

Новичок
440hz
я тоже не парился тока cp1251 и mysql_query("SET NAMES cp12351"); конект у меня всегда в одном месте
щас попросили сделать форум, а там долбанный latin1_swedish_ci
захотелось до конца разобраться в проблеме, пойду гуглю читать
 

440hz

php.ru
а там долбанный latin1_swedish_ci
кто мешает поменять на нужную? если так сложно делаешь дамп в UTF8, при создании таблиц выствляешь нужное и обратно дамп залиаешь.

-~{}~ 21.12.06 16:25:

захотелось до конца разобраться в проблеме
проблема в отм что у latin1 и cp2151 разные > 127. знаки вопроса ознчают, что mysql не может сопоставить один символ другому. и это правильно.
 

vovanium

Новичок
kos
В дампере в строке

define('RESTORE_CHARSET', 'cp1251');

прописываешь

define('RESTORE_CHARSET', 'forced->cp1251');

Потом делаешь бекап, восстанавливаешь, дампер везде пропишет кодировки cp1251 в таблицах, после чего нормально будет выводиться инфа в phpmyadmin, а в phpBB прописываешь SET NAMES cp1251 и забываешь о проблемах :)

Подробнее здесь
 

kos

Новичок
vovanium
спасибо, хорошая замена консоли
440hz
сбапибо кажется разобрался, надо переходить на юникод
 
Сверху