Нарушилась кодировка в БД Mysql > регистрозависимость поиска по рус

Тема в разделе "PHP программирование", создана пользователем DRUGADDICT, 7 янв 2010.

  1. DRUGADDICT

    DRUGADDICT Гость

    есть БД:
    запрос show variable; показывает:

    Код (Text):
    character_set_client = utf8
    character_set_connection = utf8
    character_set_database = utf8
    character_set_filesystem = binary
    character_set_results = utf8
    character_set_server = utf8
    character_set_system = utf8
    collation_connection = utf8_general_ci
    collation_database = utf8_general_ci
    collation_server = utf8_general_ci
    делал в putty (SSH)...
    *************************************
    ПЕРВЫЙ ВАРИАНТ:
    когда выполняю запрос в php (сам php файл в UTF-8):

    mysql_query("INSERT INTO `database`.`table` (`text`) VALUES ('Привет');");

    в БД записывается это: пÑ?ивет < смотрю через phpMyAdmin.
    на странице (сам файл страницы в UTF-8 так же установлен content="text/html; charset=utf-8") вывожу это, вижу нормальный русский текст, тобишь "Привет".


    ВТОРОЙ ВАРИАНТ:
    делаю "насильно" после соединения с БД:
    mysql_query("SET names 'utf8' COLLATE 'utf8_general_ci'");
    и выполняю тот же выше приведенный запрос:
    mysql_query("INSERT INTO `database`.`table` (`text`) VALUES ('Привет');");

    в БД записывается слово "Привет" < смотрю через phpMyAdmin. вывожу это на страницу, вижу нормальный русский текст... в то время как то что я записывал ранее выводится уже как пÑ?ивет

    *************************************
    объясните мне пожалуйста почему так происходит при ПЕРВОМ ВАРИАНТЕ?
    как перекодировать БД если туда всё записано по ПЕРВОМУ ВАРИАНТУ - вернее, объясните сам алгоритм, что на что кодировать?
    есть альтернатива перекодированию?

    PS. модуль php:
    iconv - есть;
    php-mbstring - нету, возможности установить - нету;


    - для чего это? ответ: по первому варианту в БД с установленной utf8_general_ci поиск русских символов регистроЗАВИСИМ, когда по ВТОРОМУ ВАРИАНТУ поиск регистроНЕзависим.

    огромное спасибо за ранее!
     
  2. DRUGADDICT

    DRUGADDICT Гость

    идея: рас браузер по ПЕРВОМУ ВАРИАНТУ всё отображается нормально, то наверно есть и способ всё оттуда вытащить в таком виде который мы наблюдаем на странице (ПЕРВЫЙ ВАРИАНТ), а затем уже нормально перелапатить БД в UTF-8 - т.к. русские символы UTF-8 в среде cp1251 будут отображаться как символы + русские буквы, сейчас же мы видим символы + латинские буквы - это на лицо неверная кодировка, как вот её вернуть в нормальное состояние не понятно.

    понятно что точно не так:
    *символы + латинские буквы (utf8) > конвертирование > символы + русские буквы (utf8)*

    тут наверно скорее как я писал вышет так будет:
    *символы + латинские буквы (utf8) > конвертирование > cp1251*
    -- но вот КАК?! :what?:
     
  3. DRUGADDICT

    DRUGADDICT Гость

    проблема решена! :KillMe:

    оказывается по умолчанию кодировка соединения и т.д.и т.п. была:
    Код (Text):
     ...
    | character_set_client          | latin1
    | character_set_connection      | latin1
    | character_set_database         | utf8
    | character_set_filesystem      | binary
    | character_set_results       | latin1
    | character_set_server          | latin1
    | character_set_system          | utf8
    | character_sets_dir             | /usr/share/mysql/charsets/
    | collation_connection          | latin1_swedish_ci
    | collation_database             | utf8_general_ci
    | collation_server              | latin1_swedish_ci
    ...
    по этому сами данные были в utf8, а метаданные таблички говорили, что она в
    latin1, и соединение в latin1. короче, всё экспортировал так:
    ssh:~ # mysqldump --default-character-set=latin1 -u root -p -h localhost -B database | sed 's/latin1/utf8/' > /home/ssh/dump.sql
    теперь русский текст отображаться нормально, далее залил в бд этот бекап и вуууоля :cool:
     
  4. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    Поздравляю=)
     
Загрузка...
Похожие Темы - Нарушилась кодировка БД
  1. NickProstoNick
    Ответов:
    6
    Просмотров:
    154
  2. R4z0R
    Ответов:
    17
    Просмотров:
    1.498
  3. PaKo
    Ответов:
    1
    Просмотров:
    1.077
  4. AndreyS
    Ответов:
    7
    Просмотров:
    3.284
  5. Niaden
    Ответов:
    1
    Просмотров:
    1.650

Поделиться этой страницей