Тема: Содержимое таблиц отображается кракозяброй.
Содержимое таблиц отображается кракозяброй (??????? ????????????? ????...), хотя сам PHPMYADMIN на русском. Где и что нужно переключить?
Заранее спсибо за ответ.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум PHP-MyAdmin.RU → Настройка phpMyAdmin → Содержимое таблиц отображается кракозяброй.
Содержимое таблиц отображается кракозяброй (??????? ????????????? ????...), хотя сам PHPMYADMIN на русском. Где и что нужно переключить?
Заранее спсибо за ответ.
roman
Содержимое таблиц отображается кракозяброй (??????? ????????????? ????...), хотя сам PHPMYADMIN на русском. Где и что нужно переключить?
По всей видимости кодировка дампа не совпадает с кодировкой базы данных. Чтобы наглядно оценить проблему набери выполни запрос: "SHOW VARIABLES LIKE 'character%'". В результате ты сможешь посмотреть кодировку клиента, mysql-сервера, базы данных.
Если база данных не создана, то при создании указать необходимое сопоставление (Collation), напр. cp1251_general_ci для кодировки cp1251 (он же Windows-1251). Если база уже создана, то текущее сопоставление можно изменить при необходимости на вкладке 'Operations'. Затем на вкладку 'Import', указываешь локальный адрес дампа, а также кодировку дампа, остается импортировать дамп. Все.
Variable_name Value
character_set_client utf8
character_set_connection latin1
character_set_database latin1
character_set_results utf8
character_set_server latin1
character_set_system utf8
Так ведь на сайте все по русски, а в phpmyadmin "русские буквы" отображаются кракозябрами. Как импраить не конвертируя БД?
roman
Попробуй так:
Браузер -> Вид -> Кодировка -> Выбери нужную (начни хоть бы с utf8)
Почему у тебя кодировки сервера и базы данных 'latin1'?:
character_set_database latin1
character_set_server latin1
По дефолту такая стаяла после установки mysql из портов freebsd.
roman
не всегда, предлагаемое по дефолту приемлимо на практике
У меня точь-в-точь проблема.
ОС Windows, Версия MySql 5. В таблицах PhpMyAdmin 2.6.4-pl4 но до этой стояла 2.7 с ней тоже были такие же проблемы. На сайте все отображается нормально, а в таблицах PhpMyAdmin в место русский букв козебяки
Попробовал создать БД так как описано:
Если база данных не создана, то при создании указать необходимое сопоставление (Collation), напр. cp1251_general_ci для кодировки cp1251 (он же Windows-1251).
Сообщения с русскими буквами ваще не записываются, т.е. запись не создается вовсе. Сервер выдает ошибку.
Выполнил этот запрос
SHOW VARIABLES LIKE 'character%'
результат тот же что у roman
character_set_connection latin1
character_set_database latin1
изменил на cp1251_general_ci
а
character_set_server
хз как!!!
Подскажите, пожалуйста, какие параметры и как надо поставить, чтобы все работало нормально.
Заранее большое спасибо.
а
character_set_server
хз как!!!
В файле my.ini (он же my.cnf) в директиве [server] изменить или добавить строку:
default-character-set=cp1251
Также не забудь убедиться что таблицы у тебя имеют нужную кодировку.
Спасибо за ответ.
В файле my.ini строку изменил. При запросе SHOW VARIABLES LIKE 'character%'
Выдаёт
character_set_client utf8
character_set_connection cp1251
character_set_database cp1251
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\char...
Ввожу в браузере в форме слова с русскими буквами сервер, выдает ошибку
Data too long for column 'name' at row 1
с английскими все нормально.
Что делать? Пожалуйста, подскажите.
Я еще по ошибке изменил в my.ini в разделе CLIENT SECTION на default-character-set=cp1251
может из-за этого, - а что там было я не помню?
Также не забудь убедиться что таблицы у тебя имеют нужную кодировку.
В таблице в колонке "Сравнение" стоит cp1251_general_ci .
rain
Вот что тебе поможет: http://phpclub.ru/faq/wakka.php?wakka=M … p#p-4270-6
Lokki может, ты на основе этого материала + собственных соображений напишешь статью для начинающих пользователей, которые не могут побороть кодировку?
Experior
Спасибо за ответ.
Статью прочитал, из прочитанного понял что мне надо конвертировать таблицу.
Выполнил запрос как там написано
SELECT CONVERT(CONVERT(name USING binary) USING cp1251) FROM addlinks
отображается все русскими буквами.
Но как конвертировать таблицы там не написано, там дана ссылка на мануал, но в этом мануле все написано по английский.
Не могли бы Вы подсказать, как можно конвертировать таблицы. Большое спасибо, за ответ.
Частично проблема решилась, перевел поля в другой тип а потом обратно появились русские слова.
Потом импортировал на хостинг, в PhpMyAdmin русские слова, а на сайте нет. Опять какие-то козебяки. Написал письмо в тех. поддержку, может они что подскажут.
rain
В той полезной статье, что кинул тебе Experior
обрати внимание на блок:
1. PHP ИСПОЛЬЗУЕТ НЕВЕРНУЮ КОДИРОВКУ В КАЧЕСТВЕ КЛИЕНТСКОЙ
[offtopic]Experior
Lokki может, ты на основе этого материала + собственных соображений напишешь статью для начинающих пользователей, которые не могут побороть кодировку?
Статья очень толковая, написать более полезную на её основе вряд ли удастся, но написать обзор по решению проблем с кодировками в рамках phpMyAdmin (при установке, создании/импорте баз данных, дампов) где будут сноски на этот материал вполне возможно, если такой обзор действительно нужен пользователям.
[/offtopic]
Пробовал устанавливать «SET NAMES кодировка» на хостинге не изменилось, на локальном изменилось.
С тех. поддержки пришло письмо:
Скорее всего, кодировка Вашей базы не совпадает с кодировкой mysql,
установленной на нашем сервере.
У нас используется кодировка cp1251.
А у меня скорее всего utf8, команда mysql_query("SET NAMES utf8"); не помогает. Хостинг от rbc
Может, кто-нибудь сталкивался с подобной проблемой
Я тут еще вот на какую статью наткнулся: http://phpclub.ru/talk/showthread.php?s … mp;rand=93
Пришлось перейти на 4 версию MySql/
rain
А у меня скорее всего utf8, команда mysql_query("SET NAMES utf8"); не помогает. Хостинг от rbc
Может, кто-нибудь сталкивался с подобной проблемой
Вот смотри комментарии к статье, которую Experior тебе показал:
Проблема: имеем таблицу с DEFAULT CHARSET=latin1, данные (если смотреть в кодировке CP1251) выглядят как-то так:
Г"ГRГ?Г Гё Г?-ГїГї ГЎГ_ГчГ_Г Г<Г_Г_ðèÿ 4.0.8.11Если смотреть в кодировке CP866 как-то так:
?Д?о?м?а???н???? ?б?????г?а?л???е???и?? 4.0.8.11Требуется перевести данные в читабельный вид.
Судя по всему, проблема заключается в том, что данные, лежащие, как думала БД, в latin1 (на самом деле они лежали в CP1251), были сохранены в UTF-8. Отсюда очевидные выводы – преобразуем дамп из UTF-8 в latin1 и получаем исходные данные в исходной кодировке.
<?php
echo iconv('UTF-8','latin1',$dump);
?>Получаем «Домашняя бухгалтерия 4.0.8.11» в кодировке CP1251, что нам и требовалось. Естесственно, не стоит забывать о необходимости исправить DEFAULT CHARSET=latin1 на DEFAULT CHARSET=CP1251
Спасибо, все, разобрался. Ура
rain
Спасибо, все, разобрался. Ура
поясни для других пользователей, как именно решил проблему. iconv() ?
Да, перед выводом функция
$text=iconv("UTF-8", "CP1251", "$text");
И, все )))))))))))))
Было такое при переносе базы с локального сервера на вирт. хостинг. Пробовал вышеописанными средствами и проч. ухищрения. Потом сделал максимально тупо: открыл файл *.sql в программе Shtirlitz и перекодировал из UTF-8 в WIN. Залил на сервер. Все работает.
Было такое при переносе базы с локального сервера на вирт. хостинг. Пробовал вышеописанными средствами и проч. ухищрения. Потом сделал максимально тупо: открыл файл *.sql в программе Shtirlitz и перекодировал из UTF-8 в WIN. Залил на сервер. Все работает.
Louie, это действительно выход из ситуации воспользоваться ШТИРЛИЦОМ? или....?
Просто вопрос в следующем. Не бейте меня модератор и админ! Я знаю правила, но просто ситуация безвыходная... Ну забаните-так забаните.....как говорится попытка-не пытка
Мои "познания" в программировании ограничиваются только HTML, css. По работе приходится иногда пользоваться phpmyadmin.
Импортирую-экспортирую дампы, создаю пользователей. Не более. Тут недавно принесли дамп. Кодировка другая. CP1251.... У нас на серваке-utf8. Сами можете догадаться, что происходит при импорте дампа. Народ, пыталась разобраться на форуме в постах. Не смотря на то, что Lokki и остальные участники форума давольно подробно все описывают-делаю, но нифига ничего у меня не получается.
Руки кривые, да и делаю бездумно-понятий то таких глубоких нет и т.п. когда идет терминология в ваших постах-это для меня вообще НЕЧТО.
Большущая просьба, помогите....если можно по шагам для таких тупых как я. А вообще, было бы действительно ЗАМЕЧАТЕЛЬНО, если бы появилась на форуме поясняющая статья именно для ЧАЙНИКОВ-которые только пользователи...
Выглядит это так:
MySQL - 5.0.22-Debian_0ubuntu6.06, phpMyAdmin - 2.8.1
UTF-8 Unicode (utf8)
ariable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
Заранее спасибо за любую помощь...
Может действительно есть какая прога для перевода дампа?
Ничего проще придумать не смог, поэтому просто написал примитивный скрипт, выполняющий перекодировку текстового файла дампа из windows-1251 в utf-8. Сразу оговорюсь, что кроме перекодировки выполняется замена только CHARSET=cp1251 на CHARSET=utf8, а этого некоторым дампам будет мало.
Если возникнут предложения на включение дополнительных слов для корректного изменения файла дампа, буду добавлять.
Что надо сделать.
Создать файл с содержимым в рамке код, положить в одну папку сделанный только что файл и ваш дамп, поменять в скрипте file.sql на имя вашего файла дампа, при желании поменять dump_utf8.sql на имя выходного, перекодированного файла дампа. Запустить скрипт. Если вылезли ошибки записи в файл, установить на папку со скриптом разрешение на запись, и повторить снова. Если созданный файл не импортируется, либо работает не всё, найти в файле все вхождения "cp1251" и поменять их на "utf8".
Все возникающие проблемы описывайте подробно. Будем вместе их решать.
<?php
// Скрипт перекодирования текстового файла из WINDOWS-1251 в UTF-8.
$dump_file = 'file.sql'; // Имя исходного файла, который необходимо перекодировать.
$output_file = 'dump_utf8.sql'; // Имя выходного файла.
$temp_dump = file_get_contents($dump_file);
$temp_dump = iconv('WINDOWS-1251', 'UTF-8', $temp_dump);
$temp_dump = str_ireplace('CHARSET=cp1251', 'CHARSET=utf8', $temp_dump);
$handle = fopen($output_file, 'w');
fwrite($handle, $temp_dump);
fclose($handle);
echo 'Скрипт выполнен.';
?>
во-первых, ОГРОМНОЕ спасибо, Hanut, что не удалил пост и не забросал камнями,
а отнесся с пониманием (!!!!) к чайнику и максимально (!!!!) подробно все описал.
Все проделала по инструкции. Дамп перекодировался... но!
После иморта вылезает такая ошибка: Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 139883 bytes) in /usr/share/phpmyadmin/libraries/sqlparser.lib.php on line 306
В браузере, при открытии адреса сайта вылезают все те же ?????
Если база данных не создана, то при создании указать необходимое сопоставление (Collation), напр. cp1251_general_ci для кодировки cp1251 (он же Windows-1251). Если база уже создана, то текущее сопоставление можно изменить при необходимости на вкладке 'Operations'. Затем на вкладку 'Import', указываешь локальный адрес дампа, а также кодировку дампа, остается импортировать дамп. Все.
А если всего этого нет.?.
Нет поля для указания сопоставления. На вкладке Operations также негде изменить.
Пробовал ПМА 2.8 и 2.9.
Локально дамп создается в ср1251, на серваке - кои8р, а засчет того, что ПМА утф-8 вообще фигня выходит.
В подсказке на серваке сказано:
#Если документы сайта в windows-1251 - после
#подключения к базе использовать директиву типа:
# $rv =$dbh->do("SET CHARACTER SET CP1251_KOI8");
После добавления дампа на сервер, выполняю SQL запрос: 'SET CHARACTER SET CP1251_KOI8', но не помагает.
Подскажите пожалуйста решение проблемы. Может стои с ПМА 2.6 попробовать?
хм, а если на запрос
SHOW VARIABLES LIKE 'character%'
сервер выдает такой ответ:
character_set_client [BLOB - 6 Bytes]
character_set_connection [BLOB - 6 Bytes]
character_set_database [BLOB - 6 Bytes]
character_set_results [BLOB - 6 Bytes]
character_set_server [BLOB - 6 Bytes]
character_set_system [BLOB - 4 Bytes]
character_sets_dir [BLOB - 80 Bytes]
то что можно делать с этим?
Cane
Ваша проблема в MySQL 4.0. Я уже писал в другой теме о возможном решении через сохранение данных в бинарном виде. Но лучше смены хостинга, всё-равно ничего не придумать.
spendolas
Возможно проблема в том, что текстовые файлы скрипта phpMyAdmin были залиты на сервер через FTP, как бинарные.
Форум PHP-MyAdmin.RU → Настройка phpMyAdmin → Содержимое таблиц отображается кракозяброй.
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.