Крякозяблы в phpMyAdmin utf8 как windows 1252

Тема в разделе "Базы данных", создана пользователем ольга2013, 17 фев 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ольга2013

    ольга2013 Постоялец

    Регистр.:
    10 ноя 2013
    Сообщения:
    133
    Симпатии:
    13
    Помогите решить phpMyAdmin в базе (таблицах) отображает страна что соответствует слову "страна" на сайте все ровно и красиво все на русском без крякозяблов. Этот Перейти по ссылке подсказал что это utf8 отображает как windows-1252 Подскажите зачем и почему phpMyAdmin utf8 отображает как windows-1252
    Запрос в базу
    SHOW GLOBAL VARIABLES LIKE 'character%'
    + Параметры
    Variable_name Value
    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
    character_sets_dir /usr/share/mysql/charsets/

    SHOW VARIABLES LIKE "character_set_database";


    + Параметры
    Variable_name Value
    character_set_database utf8

    В браузере
    ОТВЕТ

    Cache-Control no-cache, must-revalidate
    Connection keep-alive
    Content-Encoding gzip
    Content-Length 14724
    Content-Type text/html; charset=utf8
    Date Tue, 17 Feb 2015 12:13:10 GMT
    Expires Sat, 26 Jul 1997 05:00:00 GMT
    Server nginx/1.2.1
    Set-Cookie classified_session=293a8f3a9c39fae3e2ddba18229232e2; path=/; domain=.111.com classified_session=293a8f3a9c39fae3e2ddba18229232e2; path=/; domain=.111.com
    Vary Accept-Encoding
    X-Powered-By PHP/5.4.36-0+deb7u3

    ЗАПРОС

    GET /register.php HTTP/1.1
    Host: 111.com
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Referer: Перейти по ссылке
    Connection: keep-alive
    Cache-Control: max-age=0




     
    latteo нравится это.
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.521
    Симпатии:
    1.370
    К сожалению, то что на сайте всё ровно не означает, что он правильно работает с БД. Я в своей программистской юности умудрился накодить так, что в на сайте всё ок, а в таблице хранится в кракозяблах. Быстро проверить это можно воспользовавшись десктопной альтернативой phpMyAdmin, к примеру Navicat Premium или HeidiSQL.

    SHOW VARIABLES LIKE "character_set_database"; - запрос хороший, главное не промахнутся и выполнить его в контексте исследуемой базы ;)
    Я предпочитаю:
    Код:
    SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME, SCHEMA_NAME
    FROM INFORMATION_SCHEMA.SCHEMATA;
    #или с жестко заданной бд
    SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
    FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';
    
    И это всего лишь дефолтная кодировка базы, для верного понимания надо смотреть кодировку таблиц в базе:
    Код:
    SELECT TABLE_NAME, TABLE_COLLATION
    FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'db_name';
    
    # а еще лучше смотреть последние строчки:
    SHOW CREATE TABLE tbl_name;
    
    P.S.: Вопрос супер, всё очень подробно расписали - лайкнул!
     
    ольга2013 нравится это.
  3. ольга2013

    ольга2013 Постоялец

    Регистр.:
    10 ноя 2013
    Сообщения:
    133
    Симпатии:
    13
    Спасибо за подробный ответ попробую как можно подробней написать что получается
    запрос
    SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME, SCHEMA_NAME
    FROM INFORMATION_SCHEMA.SCHEMATA;
    + Параметры
    DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SCHEMA_NAME

    utf8 utf8_general_ci имя базы

    Запрос по таблицам
    SELECT TABLE_NAME, TABLE_COLLATION
    FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'db_name';
    utf8_general_ci

    Запрос в таблицу с которой проблема но ответ не понятен(
    SHOW CREATE TABLE geodesic_userdata;

    + Параметры

    Table Create Table
    geodesic_userdata CREATE TABLE `geodesic_userdata` (
    `id` int(11) ...


    Scre58ot.png
    И еще если я в базе правлю это Васян на русский текст (через phpMyAdmin) то получаю что в базе все что правила на русском а на сайте выводит ???????
    Спасибо за возможные ответы и помощь)))

    PS. Все заработало Спасибо за советы, и очень помог и не дал сложить руки интерес к моей проблеме)))
    Решение - в скрипте добавила
    Код:
     $force_db_connection_charset = 'utf8';
     
    Последнее редактирование: 18 фев 2015
Статус темы:
Закрыта.