За последние 24 часа нас посетили 20974 программиста и 1107 роботов. Сейчас ищут 402 программиста ...

Проблема с кодировкой. Вместо русских букв кракозябры.

Тема в разделе "MySQL", создана пользователем Sergey89, 30 янв 2008.

  1. Al3x

    Al3x Активный пользователь

    С нами с:
    16 окт 2008
    Сообщения:
    1
    Симпатии:
    0
    Прочитал внимтаельно посты, и хочу описать свою проблему:
    (хар-ки сервера: MySQL-кодировка: UTF-8 Unicode (utf8) , Сопоставление соединения с MySQL: UTF_UNICODE_CI)

    Есть БД: в ней все в cp1251, но есть таблицы, в которые несмотря на тип кодировки записаны данные в формате UTF8 и при дампе (phpMyAdmin или mysqldump) получается такие данные, что при вставке в новую БД буквы И и ш отображаются крякозябликами...

    Хочу перенести эту базу на другой серв, пока играл только с сервом-получателем, на источнике ничего нигде не менял, только экспортирую с него, менять страшно

    Подскажите как можно корректно переместить базу? :oops:

    добавлено позже: как я понял, уже файлы экспорта идут с битыми "ш" и "И"...

    ПРОБЛЕМА РЕШЕНА
    : что делал, на базе источнике нужным полям с проблемной кодировкой поставил тип Binary, после этого удалось без потерь сделал экспорт записей, ну а дальше все просто, добавляйте в базу используя любую кодировку. :)
     
  2. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Debian/lenny. База в cp1251
    Код (Text):
    1.  
    2. [client]
    3. port        = 3306
    4. socket      = /var/run/mysqld/mysqld.sock
    5. ...
    6. [mysqld]
    7. language    = /usr/share/mysql/english
    8. skip-external-locking
    9. ...
    10. default-character-set=cp1251
    11. #default-character-set=utf8
    12. character-sets-dir=/usr/share/mysql/charsets/
    13.  
    14.  
    15. [mysqldump]
    16. ...
    17. default-character-set=cp1251
    18. #default-character-set=utf8
    19. character-sets-dir=/usr/share/mysql/charsets/
    20.  
    21. [mysql]
    22. ...
    23. default-character-set=cp1251
    24. #default-character-set=utf8
    25. character-sets-dir=/usr/share/mysql/charsets/
    если в начале соединения написать SET NAMES cp1251, то все ок. Но использовать этот метод не хочется. Под вендой работает и без SET NAMES. Как можно еще?

    SOLVED
    добавить в секцию [mysqld] или [server] файла my.cnf/my.ini параметр skip-character-set-client-handshake. Этот параметр заставляет сервер игнорировать кодироку, посылаемую клиентом, и использовать указанную серверу.
     
  3. alfnoir

    alfnoir Активный пользователь

    С нами с:
    20 дек 2008
    Сообщения:
    1
    Симпатии:
    0
    Проблема с переносом сайта!!

    Помогите пожалуйста решить проблему с переносом сайта на другой хост. Дело вот в чем, при переносе сайта с одного хостинга на другой произошло следующее. Перестали добавляться категории объявлений, но только если я пишу их на русском выдает Database query error, на английском все ок. Залезаю в саму базу данных, меняю надпись на русскую, все поменялось но теперь вместо первой буквы в каждом слове символ знак вопрса в ромбе, кракозябра короче. Ладно поехал дальше, добавил объявление чтобы протестить, при добавлении объявы та же самая вещь, на английском нормально, на русском нет. На прошлом хосте все работает, а я все перенес путем экспорт-импорт всей базы.
     
  4. mogred

    mogred Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    1
    Симпатии:
    0
    День добрый. У меня вся таже проблема с кодировкой в базе
    Кирилица отображается кракозяброй - Буклеты.
    Однако если создать новую запись она отображается коректно.
    Настройки сервера
    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, и с помощью специальных скриптов.И отоюражение на сервере менял. Всё в пустую. Подскажите, пожалуйста, чтоможно ещё попробовать.
     
  5. gfk

    gfk Активный пользователь

    С нами с:
    25 фев 2007
    Сообщения:
    3
    Симпатии:
    0
    Адрес:
    USA
    Я решил эту проблему так, в файл который соединяется с базой добавил это

    <?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();
    };
    ?>
     
  6. F1do

    F1do Активный пользователь

    С нами с:
    19 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    Создавал таблицу в utf8_general_ci, но после перноса стали показываться только вопросительные знаки (????? ????? ?????)

    Помогло:

    PHP:
    1. <?
    2. mysql_pconnect ("$mysql_host", "$mysql_name", "$mysql_pass") or die ("Could not connect to MySQL server!");
    3. mysql_query("SET NAMES 'cp1251'");
    4. ?>
    Спасибо!
     
  7. tymakr

    tymakr Активный пользователь

    С нами с:
    25 апр 2009
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте, помогите мне пожалуйста с крякозябрами. У меня в базе в 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

    Заранее огромное спасибо.
     
  8. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Хорошо что ещё
     
  9. AlleeX

    AlleeX Активный пользователь

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ
    Мне эта штучка тоже помогла спастись от злосных ?????? ???????? ???? вместо русского языка!
     
  10. Bondaryoff

    Bondaryoff Активный пользователь

    С нами с:
    6 янв 2010
    Сообщения:
    2
    Симпатии:
    0
  11. prst

    prst Активный пользователь

    С нами с:
    30 авг 2006
    Сообщения:
    107
    Симпатии:
    0
    Кодировки

    Везде где можно прописано UTF-8 (apache, mysql, файлы со скриптами). Имеем 2 системы:
    1. Ubuntu: данные в базе ложатся в latin1. Лечится установкой в скрипте SET NAMES, но можно ли как то обойтись без лишних записей в скрипте?
    2. Win 7: Данные в таблицах как сказал декодер Темы в 1252. Даже не помогает SET NAMES. Если же попробовать вставить данные через phpmyadmin то данные в нем отображаются корректно.
     
  12. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
  13. Alexsey Beluaev

    Alexsey Beluaev Активный пользователь

    С нами с:
    9 июн 2011
    Сообщения:
    13
    Симпатии:
    0
    setup UTF CAST
    Файлы в utf 8 попробуй завернуть. Про таблицы все написано давно (
     
  14. Alexsey Beluaev

    Alexsey Beluaev Активный пользователь

    С нами с:
    9 июн 2011
    Сообщения:
    13
    Симпатии:
    0
    Помогло нет ?
     
  15. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Alexsey Beluaev

    Ты смотри на дату последнего сообщения, ок?
     
  16. thyry

    thyry Активный пользователь

    С нами с:
    25 авг 2011
    Сообщения:
    4
    Симпатии:
    0
    Что делать, если глючит консоль? Везде прописал utf8, в phpmyadmin отображается всё нормально, но когда я пишу в консоли запрос типа select name from table; он всё равно выводит каракули в таблице! Как изменить кодировку консоли?
     
  17. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Консоль - просто обычная, которая вместе с MySQL шла? Которая такая, чёрный фон, серые буквы (а-ля DOS)?
    Можно написать *.bat файлик, который предварительно установит кодировку самой консоли. Можно в самой консоли перед тем, как начать работать с русскими буквами выполнить запрос на установку кодироваки соединения с б.д.
    Если это стандартная виндовая консоль - то по идее там изначально кодировка cp866 (старая досовская кодировка). MySQL её знает, соответственно, можно просто написать в консоли SET NAMES cp866, после чего работать с кириллическими текстовыми данными.
     
  18. thyry

    thyry Активный пользователь

    С нами с:
    25 авг 2011
    Сообщения:
    4
    Симпатии:
    0
    sobachnik
    OK. Всё заработало.
     
  19. slarkstudio

    slarkstudio Активный пользователь

    С нами с:
    1 мар 2012
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, я вдоль и поперек изучил эту тему, но так и не смог найти решение свой проеблемы.
    Я принудительно вначале странички посылаю header('Content-Type: text/html; charset=utf-8'); и тогда в БД приходят крякозябры вместо русиша.
    Если этого не делать, то тогда все впорядке (спасибо всем за информацию, объяснили что к чему).
    Как это все может быть связано, и как с этим рациональней справится.
    Заранее благодарен.
     
  20. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Сразу после подключения к б.д. отправлять запрос SET NAMES utf8. Желательно, чтобы и сами таблицы в б.д. были в этой кодировке, иначе MySQL будет постоянно перекодировать данные.
     
  21. slarkstudio

    slarkstudio Активный пользователь

    С нами с:
    1 мар 2012
    Сообщения:
    2
    Симпатии:
    0
    Как не странно, но я само собой это делал и оно не помогало. но после вашего поста с заного сделал вот так:
    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'");

    и оно ЗАРАБОТАЛО)))))
    Возможно просто не ватало где-то кавычек или еще чего-то)))
    Вот где сила взаимоподдержки, мегоблагодарен)

    сайчат будем выводить из БД и чует моя попа что будут сюрпризы)
     
  22. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    У тебя из этих 4-х запросов правильный только один - первый.
    MySQL не знает кодировку "utf-8", он знает только "utf8" (без дефиса). И сравнение "utf_general_ci" он тоже не знает. Он знает только "utf8_general_ci". Кроме того, один запрос SET NAMES делает тоже самое, что и ты бы хотел, чтобы делали твои три последующих. Их можно просто убрать. Заработало просто за счёт хотя бы одного (первого) рабочего запроса на установку кодировки.
     
  23. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Это феерический апокалипсец...

    Просто оставлю это здесь... (видимо с первого раза никто не умеет читать)
     
  24. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    я второй раз не вижу твоего коммента ;) мож надо красным под 200% и чтоб мигал?
     
  25. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    И играла музыка, а по экрану мерцали звёздочки )))