За последние 24 часа нас посетили 17594 программиста и 1722 робота. Сейчас ищут 949 программистов ...

vBulletin и кодировка в базе данных

Тема в разделе "MySQL", создана пользователем viphost, 3 ноя 2011.

  1. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Может кто сталкивался с проблемой и смог ее решить
    Еще давно создал форум на булке, недавно его переносил на впс и увидел что в базе кракозябры, на сайте все норм, а вот в базе кракозябры.
    Можно ли как то поправить базу, чтобы русские символы отображались нормально? Может быть sql запрос какой то сделать, пробовал сравнивать, но что то не получилось или не попал на нужную кодировку.
    Символы хранятся в базе вида
    Таблица в latin1_swedish_ci
    Вывожу на форуме в cp1251
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Скорее всего, в базе всё хранится как раз в кодировке Windows-1251. Но были неправильно созданы таблицы (с кодировкой по-умолчанию latin1). Т.е. таблицы все, как ты пишешь, в latin1, но реально данные в них лежат в cp1251.
    Та программа, с помощью которой ты просматриваешь б.д. (phpMyAdmin, Navicat, etc...), скорее всего смотрит кодировку по-умолчанию для таблиц и пытается отобразить данные с её учётом (т.е. перед вывод делает преобразование из latin1 в ту кодировку, в которой работает сама программа), так как логично предполагает, что если у таблицы кодировка стоит latin1, то и данные должны быть в этой кодировке. Т.е., например, если интерфейс программы отображается в кодировке 1251, то программа делает преобразование из latin1 в cp1251 над данными, которые итак в cp1251. В результате всё отображается не так как хотелось бы.
     
  3. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    да да, в базе таблицы в latin1, а сравнение как я понял в CP1251, в самой программе (форуме) указано, что выводить текст из базу нужно в CP1251 и по этому все нормально выводится, но вот как поправить базу данных, чтобы и там все отображалось по русски, а не кракозябрами. При сливе базы и открытия в нотепаде, такие же кракозябры, пробовал менять кодировку на русские символы не попал.
    Как я понял нужно в какой то софтине открыть базу в latin1 и затем перевести ее в CP1251? Или я не так понял? И если так то как это сделать? Или жу может какой то запрос просто выполнить, который произведет правильное сравнение и поправит символы в базе