Необычный случай с кодировкой в PHP

Тема в разделе "Как сделать...", создана пользователем vave, 20 мар 2009.

Статус темы:
Закрыта.
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Перерыл весь интернет и весь форум, так и не нашёл ответа,
    ситуация сложилась довольно странная, но я расскажу как эту проблему вижу я,
    Есть 2 файла ru.php и en.php

    в en.php, кодировка utf8
    в ru.php, кодировка windows-1251

    и так, сайт имеет возможность менять языки, с этим проблем нет..
    только если я создаю какой-то блог, описание фотографии, или просто оставляю комментарий на русском языке, то в Английской версии всё отображается чётко, а вот в русской версии начинаю просматривать и появляются иероглифы!
    если я добовляю комментарий на русском языке с русской страници то он вообще не добовляется, тоесть вместо русских букв пустые места, если англ буквы то всё ок..

    и так, мои подазрения на проблему:
    в базу данных идёт текст с одной кодировкой а внутри уже другая, соответсвенно и выходят каракули..

    Варианты которые я пробовал для устранения проблемы:
    менял кодировки в файлах en.php и ru.php,
    выставлял везде где умел одну и ту-же кодировку..

    в итоге всё равно, всё что в файле ru.php отображается нормально, а комментарии и всё что новое вноситься в базу данных иероглифы..


    мне кажеться нужно как-то всю страницу сделать под UTF-8, или настроить таблици в mysql под windows-1251

    Что бы было легче понять проблему можете просмотреть её в онлайн режиме))

    _www.date.gio.ee

    Login: asdasd
    Pass: asdasd

    Очень надо!
    Помогите кто может!!!:thenks:
     
  2. black.cat

    black.cat

    Регистр.:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    32
    Верная мысль.

    Посмотрел на сайт - действительно инфа в базу падает не в той кодировке (назад возвращаются вопросики)

    Вобще стоит проверить все участки на отсутствие кодировок отличныйх от UTF-8
    а имеено:
    1. Сервак(ось, локаль)
    2. Дефолт локаль в mysql.
    3. Дефолт локаль для базы/таблицы.
    4. Само двигло (не должно ниче конвертить и извращать)
    (Пункты 2-3 проверяем в phpmyadmin)
     
  3. Neow15ard

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    Присвоение таблицам соответвия кодировке в mysql,phpadmin не совсем корректны.Надо расставлять в соответсвиии .бился в жумле с такой же проблемой. 2 языка и одна база,но таблицы хоть разные.
    В идеале перевеси бы всю на utf и нет проблем.(
     
  4. black.cat

    black.cat

    Регистр.:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    32
    Я не призываю к присвоению! Я сторонник нативного UTF-8. А как ТС к нему прийдет - это уже детали. Конвертить чтото готовое - это уже всеравно что трипер лечить... поздно (но нужно)...
    Мне видится что ТС в разработке и он щаз может выбрать правильные кодировки на всех этапах и не поеб...ть...
    оних и писалъ.
     
  5. g00dwin

    g00dwin

    Регистр.:
    9 ноя 2006
    Сообщения:
    164
    Симпатии:
    68
    Да че тут голову ломать? Весь сайт на utf-8 (и все файлы наверное, а не только en.php), и только русский - 1251.Конвертни ru.php в utf-8 и будет счастье.
     
  6. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Если много языков лучше делать utf8. Базу, таблицы и поля установить utf8_general_ci, кодировку страниц установить charset=utf-8, все php файлы где есть тексты, слова, переводы конвертировать в utf8 (например с adobe dreamweaver), остальные где только ascii то не надо. После подключения к базе (mysql_select_db), определить кодировку
    PHP:
    mysql_query("SET NAMES 'utf8'");
    Если проблемы в ie с кодировкой или сервер возвращает не utf8, то создать .htaccess файл:
    Код:
    AddDefaultCharset utf-8
    
     
  7. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Пробую решить проблему но пока слабо получается, кстати заметил еще 1 нюансик, если с русской версии сайта, я в браузере переключаю кодировку на UTF-8 то русские сообщения отправляются и читаются, но тогда весь перевод сайта преобразовывается в иероглифы..

    Добавлено через 9 минут
    Следующая проблема!
    когда вся страница на UTF-8 то единственной проблемой остаётся вывод перевода из ru.php на саму страницу, перевод текста в иероглифах а вывод из БД правильный, как мне сделать что бы русский текст из ru.php отображался правильно в UTF-8 кодировке?
    вы это можете так-же сами просмотреть: меняете в браузере кодировку на UTF-8 и появляется возможность оставлять комменты и читать, но перевод страницы не читаем:confused:
     
  8. medvoodoo

    medvoodoo Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    89
    Симпатии:
    19
    хм, а о такой команде ничего не слышали?
    PHP:
    mysql_set_charset()
    RTFM
     
  9. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Слышал Слышал=)
    но мне сейчас нужно что бы на странице работал русский перевод в UTF-8 кодировке,
    а я не знаю как это сделать, перевод храниться в PHP файле, не в БД
     
  10. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Конвертните русский перевод в UTF-8 и установите кодировку страницы жестко.
     
Статус темы:
Закрыта.