в phpMyAdmin все в виде: ЧаВО ...

aZa

Новичок
в phpMyAdmin все в виде: ЧаВО ...

Сайт полностью работает на UTF8, все отлично отображается и работает, но вот заставить phpMyAdmin корректно отображать данные никак не получается - все у него в виде:
ЧаВО
Арты
и прочее

При попытке выполнить в том же PMA запрос вида:
SELECT title, CONVERT(CONVERT(title USING binary) USING cp1251) FROM table;

Вместо значений выше получаем:
ЧаВО
Арты

Если в предыдущий запрос вместо cp1251 подставить utf8, оба поля в возвращаемом селекте идентичны. И база, и таблица и соответсвующее поле имеют collation 'utf8_general_ci'.

Перечитал кучу факов, но не могу определить где же именно суть проблемы или это вообще проблемы сугобо PMA (все остальное работает великолепно).

Пните в нужном направлении - где копать. :D

-~{}~ 21.12.05 17:31:

Еще могу добавить, что путем "научного Тыка", маленькая буква "ф", введенная скриптом в базу, превращается в PMA в "С„" (C и символ, похожий на две запятые) ... между тем на страницах она попрежнему великолпно отображается меленькой русской "ф".
 

ForJest

- свежая кровь
Полагаю что нужно выбрать правильный language на первом экране phpMyAdmin.
Или, если там нет подходящего, то нужно настроить
<meta http-equiv="Content-Type" content="text/html; charset="">
 

aZa

Новичок
Проблему исправило добавление:
mysql_query('SET CHARACTER SET utf8;', $connection);

Теперь и PMA, и скрипты корректно отображают данные в UTF-8 ... Но встает другая проблема - а в чем же тогда хранятся данные, которые были "забиты" до этого фикса и как же их преобразовать в корректный UTF-8.

То есть вопрос в том каким образом "С„" превращается в "ф" и наоборот, какая схема преобразований?..

P.S.: HTTP заголовок корректно отдается как utf-8, что такое myltubyte - не в курсе, используется виртуальный сервер у "общедоступного" хостера, используемые ini-файлы не предоставляет. :(
 

aZa

Новичок
любопытно, каким образом PHP определяет, в каком виде *отдавать* [mysql_query('INSERT ...') и иже с ними] данные в MySQL ... я, честно говоря, полагал, что сам MySQL устанавливает это значение в зависимости от collation базы на этапе mysql_select_db(), но это точно не так у моего хостера. неужели единственный выход практически вручную выставлять это дело, запуская mysql_query('SET CHARACTER SET utf8;', $connection)?
 

Profic

just Profic (PHP5 BetaTeam)
aZa
Сам MySQL ничего не делает, без просьбы. А клиент просит либо cp1251, либо latin1 в зависимости от кривизны хостера. Даже больше "SET NAMES кодировка" это ни в коем случае не "проблема", ведь при соединении с сервером ты указываешь какую базу данных использовать? Ну так и скажи серверу, который умеет работать с кучей кодировок в какой кодировке ты с ним хочешь общаться.
 

aZa

Новичок
Собственно так и сделал. Я вообще не понимаю почему народ до сих пор испольует "cp1251", если уже давным-давно есть UTF-8 ...
 

confguru

ExAdmin
Команда форума
aZa

Если бы за перевод из cp1251->utf8
платили бы хотя бы 10$
я был бы первый в очереди :)
 
Сверху