Неправильная кодировка русских символов в базе данных

Discussion in 'PHP' started by Ershik, 28 Feb 2008.

  1. Ershik

    Ershik Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    301
    Likes Received:
    46
    Reputations:
    6
    У меня проблема c кодировкой, или mysql шалит либо еще что-то соседнее. Apache переставил на кодировку cp1251
    При загрузке дампа с русскими символами, mysql изменяет все русские символы на ??????
    Как это можно исправить?
    Пробовал
    $:
    Code:
    mysql set name cp1251
    не помогло.
     
  2. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    у меня кодировка базы стоит utf-8 а кодировка скриптов уже windows-1251
     
  3. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    У тебя, равно как и у всех, в конфиге по дефолту прописана кодировка latin-1.
    Есть несколько вариантов исправить это дело:
    1, самый простой: изменить /etc/my.cnf:
    Code:
    default-character-set = cp1251
    2, самый рациональный: в начало дампа добавить строку
    Code:
    SET NAMES cp1251
    Эта же команда должна(!) выполняться каждый раз после подключения движка сайта к базе данных, для стабильной работе движка при любых настройках мускула (дядьки, которые писали koobi об этом не подумали).
     
  4. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    помогите разобраться с кодировкой.

    через phpmyadmin вставляю дамп, предварительно приписав "SET NAMES cp1251" или "SET NAMES utf8" (толку никакого).
    В скрипте, сразу после подключения выполняю запрос
    mysql_query("SET NAMES utf8"); (или опять же cp1251)

    Получаю на странице вместо русского текста -

    2 Федор Сергеев
    3 Василий Пустяков
    4 Мария Соколова
    5 Тест Юзер
     
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    точно такая же проблема была у меня с форумом mybb, решилось тем что в метах я прописал кодировку utf8, а таблицы в бд были в cp1251...
     
    1 person likes this.
  6. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    всё, проблема решилась :)
    в скрипте было написано
    mysql_query("SET NAMES cp-1251");
    а кодировка пишется без тире.
     
  7. Ershik

    Ershik Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    301
    Likes Received:
    46
    Reputations:
    6
    У меня тоже проблема решилась.
    В базе данных исправил кодировку cp1251 на utf8. Все заработало стабильно.
     
  8. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    PHP:
    mysql_query("SET NAMES CP1251");
    mysql_query("SET COLLATION_CONNECTION=CP1251_GENERAL_CI");
    заюзать сразу после коннекта с БД.
     
  9. GrisS

    GrisS Elder - Старейшина

    Joined:
    7 Jan 2006
    Messages:
    47
    Likes Received:
    1
    Reputations:
    0
    Здраствуйте ребятя, родскажите пожалюсто где надо исправить или добавить charset штобы вопрос (загаловка) в Poll отабражалось правилно? сейчась видно примерно так :( &#4304&#4314&#4317&#4336&#4304

    ещо в Топ статях заголовка отображается правилно а когда перехожу целиком на статю заголовка сново барахлит (Articles)

    ещо в Speedbar тоже самое...

    стоит последний релиз censored! спосибо заранее...

    http://img78.imageshack.us/img78/3493/src016lc.jpg
     
    #9 GrisS, 6 Mar 2008
    Last edited: 6 Mar 2008
  10. DCRM

    DCRM Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    67
    Likes Received:
    27
    Reputations:
    -1
    Это не всегда помогает((
    Ещё можно для уверенности добавить при создании таблицы(к примеру):
    Code:
    create database $DB1 character set 'cp1251'
    И на счёт настройки MySQL5...
    Меня постоянно добивали "Русские символы" аля "?????"
    Решилось с помощью правки my.ini

    Code:
    [B][mysql][/B]
    default-character-set=cp1251
    
    [B][mysqld][/B]
    default-character-set=cp1251
    character-set-server=cp1251
    collation-server=cp1251_general_ci
    init-connect="SET NAMES cp1251"
    skip-character-set-client-handshake
    
    [B][mysqldump][/B]
    default-character-set=cp1251
    + если мускул ругается что не может найти кодировку, то допишем строчку:

    Code:
    [B][client][/B]
    character-sets-dir=x:/mysql/share/charsets/
    P.S. Надеюсь не переборщил с атрибутами :)
     
    #10 DCRM, 7 Mar 2008
    Last edited: 7 Mar 2008
  11. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Не советовал бы я мускул затачивать специально под cp1251 - как ни крути, а все идет к повсеместному использованию юникода. Большинство новых и продвинутых движков работают именно на нем, особенно когда речь заходит о мультиязычности.
    Короче говоря, мой совет - использовать utf-8
     
  12. DCRM

    DCRM Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    67
    Likes Received:
    27
    Reputations:
    -1
    utf-8... Пусть будет Юникод) Это просто к примеру написал... как говориться если ничего не переубеждает Мускул, то мы переубедим его по своему :p
     
  13. GrisS

    GrisS Elder - Старейшина

    Joined:
    7 Jan 2006
    Messages:
    47
    Likes Received:
    1
    Reputations:
    0
    в базе у меня всё впорядке, у меня вся база в уникоде.

    я начил весь koobi перевод на грузинском языке, всё перерыл, все фаилы в templates/standard/page переделал так: charset=utf-8
    проблема в том что, в верхнем панели и глава опроса грузинские буквы не видны,

    вот Screenshot -> http://img78.imageshack.us/img78/3493/src016lc.jpg

    просто не нашол, нужно в некоторых фаилах или изменить или дописать это

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    помогите пожалюсто, очен нужно.
     
  14. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    GrisS, в твоём случае скорее всего символы типа &#4304 в коде написаны &amp;#4304, то есть идёт замена символов. Такое бывает при фильтровании данных. Иногда трудно понять, где данные фильтруются. Обычно на выводе, но они ведь могут быть записаны в базе данных уже такими. Посмотри сорс и скажи где и как.
     
  15. GrisS

    GrisS Elder - Старейшина

    Joined:
    7 Jan 2006
    Messages:
    47
    Likes Received:
    1
    Reputations:
    0
    Ранше ставил ранную версию и ранше както зделал всё это, а сейчас просто с ума сашол несмог некак :(

    столко пчп не знаю штобы в филтрациях рылся, просто подскажите кто знает пожалуйсто шаблон которий выводит POll

    до голосования:
    [​IMG]
    после голосования:
    [​IMG]
    и в архив:
    [​IMG]
     
    #15 GrisS, 7 Mar 2008
    Last edited: 10 Mar 2008
  16. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    смотри в /templates/<template>/poll/ файлики
    poll.tpl
    poll_archive.tpl
    poll_detail.tpl
    poll_result.tpl
    poll_result_navi.tpl
    showpoll.tpl

    Еще одно западло закралось в файле functions/Func.Session.php
    Там забыли прописать SET NAMES, из-за этого бывают бока в магазине.
     
  17. GrisS

    GrisS Elder - Старейшина

    Joined:
    7 Jan 2006
    Messages:
    47
    Likes Received:
    1
    Reputations:
    0
    добавление мета тега в /templates/<template>/poll/ файлики

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    непомогло :(

    -----------

    когда в админке в "Редактировать опрос"

    в Название вожу юникод симболы в админке видно так как надо: [​IMG]

    в базе видно так: [​IMG]

    подскажите кокоий шаблон отвечает збора Название полла с базы?
    потомучто как выдно в базе, так и видно в полле...

    [​IMG]

    у меня всся база utf8_general_ci