Прочитал внимтаельно посты, и хочу описать свою проблему: (хар-ки сервера: MySQL-кодировка: UTF-8 Unicode (utf8) , Сопоставление соединения с MySQL: UTF_UNICODE_CI) Есть БД: в ней все в cp1251, но есть таблицы, в которые несмотря на тип кодировки записаны данные в формате UTF8 и при дампе (phpMyAdmin или mysqldump) получается такие данные, что при вставке в новую БД буквы И и ш отображаются крякозябликами... Хочу перенести эту базу на другой серв, пока играл только с сервом-получателем, на источнике ничего нигде не менял, только экспортирую с него, менять страшно Подскажите как можно корректно переместить базу? добавлено позже: как я понял, уже файлы экспорта идут с битыми "ш" и "И"... ПРОБЛЕМА РЕШЕНА: что делал, на базе источнике нужным полям с проблемной кодировкой поставил тип Binary, после этого удалось без потерь сделал экспорт записей, ну а дальше все просто, добавляйте в базу используя любую кодировку.
Debian/lenny. База в cp1251 Код (Text): [client] port = 3306 socket = /var/run/mysqld/mysqld.sock ... [mysqld] language = /usr/share/mysql/english skip-external-locking ... default-character-set=cp1251 #default-character-set=utf8 character-sets-dir=/usr/share/mysql/charsets/ [mysqldump] ... default-character-set=cp1251 #default-character-set=utf8 character-sets-dir=/usr/share/mysql/charsets/ [mysql] ... default-character-set=cp1251 #default-character-set=utf8 character-sets-dir=/usr/share/mysql/charsets/ если в начале соединения написать SET NAMES cp1251, то все ок. Но использовать этот метод не хочется. Под вендой работает и без SET NAMES. Как можно еще? SOLVED добавить в секцию [mysqld] или [server] файла my.cnf/my.ini параметр skip-character-set-client-handshake. Этот параметр заставляет сервер игнорировать кодироку, посылаемую клиентом, и использовать указанную серверу.
Проблема с переносом сайта!! Помогите пожалуйста решить проблему с переносом сайта на другой хост. Дело вот в чем, при переносе сайта с одного хостинга на другой произошло следующее. Перестали добавляться категории объявлений, но только если я пишу их на русском выдает Database query error, на английском все ок. Залезаю в саму базу данных, меняю надпись на русскую, все поменялось но теперь вместо первой буквы в каждом слове символ знак вопрса в ромбе, кракозябра короче. Ладно поехал дальше, добавил объявление чтобы протестить, при добавлении объявы та же самая вещь, на английском нормально, на русском нет. На прошлом хосте все работает, а я все перенес путем экспорт-импорт всей базы.
День добрый. У меня вся таже проблема с кодировкой в базе Кирилица отображается кракозяброй - Буклеты. Однако если создать новую запись она отображается коректно. Настройки сервера character set client utf8 (Global value) cp1251 character set connection utf8 (Global value) cp1251 character set database cp1251 character set filesystem binary character set results utf8 (Global value) cp1251 character set server cp1251 character set system utf8 character sets dir /usr/share/mysql/charsets/ collation connection utf8_general_ci (Global value) cp1251_general_ci collation database cp1251_general_ci collation server cp1251_general_ci Таблицы в utf8_general_ci Можно ли как-нибудь сделать дамп этой базы с нормальным отображением кирилицы? Чего я жуе только не перепробовал! дамп делал и помощью phpMyAdmin, и с помощью специальных скриптов.И отоюражение на сервере менял. Всё в пустую. Подскажите, пожалуйста, чтоможно ещё попробовать.
Я решил эту проблему так, в файл который соединяется с базой добавил это <?php $dbhost = "localhost"; $dbname = "baza"; $dbuser = "root"; $dbpass = ""; $link = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error()); mysql_query ("SET CHARACTER SET 'cp1251'", $link); mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); mysql_query ("set collation_connection='cp1251_general_ci'"); mysql_query ("SET NAMES cp1251"); mysql_select_db($dbname,$link) or die("Could not find db"); if (!headers_sent()) { session_start(); }; ?>
Создавал таблицу в utf8_general_ci, но после перноса стали показываться только вопросительные знаки (????? ????? ?????) Помогло: PHP: <? mysql_pconnect ("$mysql_host", "$mysql_name", "$mysql_pass") or die ("Could not connect to MySQL server!"); mysql_query("SET NAMES 'cp1251'"); ?> Спасибо!
Здравствуйте, помогите мне пожалуйста с крякозябрами. У меня в базе в PhpMyAdmin и на самом сайте вместо кирилицы отображаются знаки вопроса. Я уже перепробовал все способы которые нашел на вашем сайте. Но возможно я чтото делал неправильно так как я не опытный в етом деле. Вобщем : [sql]SHOW GLOBAL VARIABLES LIKE 'char%'[/sql] character_set_client latin1 character_set_connection latin1 character_set_database latin1 character_set_results latin1 character_set_server latin1 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ Я так понял latin1 надо поменять на ut8 чтоб кирилица корректно отображалась, но как ето сделать? Версия phpMyAdmin 2.6.4-pl2 , версия Mysql 4.1.22-standard-log Заранее огромное спасибо.
PHP: <?php $link = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error()); [color=red]mysql_query ("SET CHARACTER SET 'cp1251'", $link); mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); mysql_query ("set collation_connection='cp1251_general_ci'"); mysql_query ("SET NAMES cp1251");[/color] mysql_select_db($dbname,$link) or die("Could not find db"); if (!headers_sent()) ?> [html] Ето руль [/html]
Кодировки Везде где можно прописано UTF-8 (apache, mysql, файлы со скриптами). Имеем 2 системы: 1. Ubuntu: данные в базе ложатся в latin1. Лечится установкой в скрипте SET NAMES, но можно ли как то обойтись без лишних записей в скрипте? 2. Win 7: Данные в таблицах как сказал декодер Темы в 1252. Даже не помогает SET NAMES. Если же попробовать вставить данные через phpmyadmin то данные в нем отображаются корректно.
Мануал кто нибудь видел ? (знаете что это вообще такое ?) http://www.php.net/manual/en/function.m ... harset.php
Что делать, если глючит консоль? Везде прописал utf8, в phpmyadmin отображается всё нормально, но когда я пишу в консоли запрос типа select name from table; он всё равно выводит каракули в таблице! Как изменить кодировку консоли?
Консоль - просто обычная, которая вместе с MySQL шла? Которая такая, чёрный фон, серые буквы (а-ля DOS)? Можно написать *.bat файлик, который предварительно установит кодировку самой консоли. Можно в самой консоли перед тем, как начать работать с русскими буквами выполнить запрос на установку кодироваки соединения с б.д. Если это стандартная виндовая консоль - то по идее там изначально кодировка cp866 (старая досовская кодировка). MySQL её знает, соответственно, можно просто написать в консоли SET NAMES cp866, после чего работать с кириллическими текстовыми данными.
Здравствуйте, я вдоль и поперек изучил эту тему, но так и не смог найти решение свой проеблемы. Я принудительно вначале странички посылаю header('Content-Type: text/html; charset=utf-8'); и тогда в БД приходят крякозябры вместо русиша. Если этого не делать, то тогда все впорядке (спасибо всем за информацию, объяснили что к чему). Как это все может быть связано, и как с этим рациональней справится. Заранее благодарен.
Сразу после подключения к б.д. отправлять запрос SET NAMES utf8. Желательно, чтобы и сами таблицы в б.д. были в этой кодировке, иначе MySQL будет постоянно перекодировать данные.
Как не странно, но я само собой это делал и оно не помогало. но после вашего поста с заного сделал вот так: mysql_query("SET NAMES 'utf8'"); mysql_query ("set character_set_client='uft-8'"); mysql_query ("set character_set_results='uft-8'"); mysql_query ("set collation_connection='utf_general_ci'"); и оно ЗАРАБОТАЛО))))) Возможно просто не ватало где-то кавычек или еще чего-то))) Вот где сила взаимоподдержки, мегоблагодарен) сайчат будем выводить из БД и чует моя попа что будут сюрпризы)
У тебя из этих 4-х запросов правильный только один - первый. MySQL не знает кодировку "utf-8", он знает только "utf8" (без дефиса). И сравнение "utf_general_ci" он тоже не знает. Он знает только "utf8_general_ci". Кроме того, один запрос SET NAMES делает тоже самое, что и ты бы хотел, чтобы делали твои три последующих. Их можно просто убрать. Заработало просто за счёт хотя бы одного (первого) рабочего запроса на установку кодировки.
Это феерический апокалипсец... Просто оставлю это здесь... (видимо с первого раза никто не умеет читать)