Символы от UTF-8 на Windows-1251

Тема в разделе "PHP", создана пользователем yeaahhh, 18 сен 2011.

Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья.
    На сайте всё больше и больше пользователи стали использовать символы. Например разлиные сердечки и т.п.
    Но они отображаются как Вопросительные знаки. Я полагаю, что проблема в том, что на сайте стоит Windows-1251.
    Можно ли их как-то отобразить на win-1251?
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Ну в принципе все можно.... попробуй использовать функцию iconv()
    PHP:
    iconv("UTF-8"," win-1251"$name);
     
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Делов том, что в БД они уже в форме Вопросительных знаков попадают.. Т.е. нужно их преобразовывать перед вставкой в бд.. Только вот как их конвертировать..?
     
  4. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.035
    Симпатии:
    703
    ну естественно надо конвертировать до инсерта в базу. Я так понимаю они из какой-то формы приходят? вот и делайте обработку после получения результатов этой формы и перед вставкой в базу.
     
  5. luckydark

    luckydark Создатель

    Регистр.:
    27 ноя 2008
    Сообщения:
    26
    Симпатии:
    5
    ну вот так и конвертировать ;) перед вставкой в базу:
    iconv("UTF-8", "win-1251", $name); # из UTF-8 в win-1251
    iconv("win-1251", "UTF-8", $name); # из win-1251 в UTF-8
    так же, после установки соединения с базой, сказать ей:
    set names "кодировка"
    set character set "кодировка"
     
  6. dimzik

    dimzik Писатель

    Регистр.:
    16 сен 2011
    Сообщения:
    9
    Симпатии:
    0
    в базе данных какая кодировка используется? посмотрите с помощью phpMyAdmin
     
  7. Gorin

    Gorin Создатель

    Регистр.:
    9 сен 2011
    Сообщения:
    18
    Симпатии:
    1
    нет, их просто там нет там.
     
  8. polyetilen

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

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    как вариант использовать htmlentities для перевода в хтмл коды всего что нет в кириллице
    PHP:
    $name htmlentities($nameENT_QUOTES"cp1251");
    сердечко будет ♥
    или переходить на utf-8 (конвертировать тексты в скрипте, текстовые функции, база данных в utf-8) и такой проблемы не будет.
     
  9. senty

    senty Постоялец

    Регистр.:
    23 дек 2009
    Сообщения:
    62
    Симпатии:
    1
    PHP:
    function recode2($from$to$text) {
        if (
    function_exists('iconv')) { return iconv($from$to$text); }
        elseif (
    function_exists('recode_string')) { return recode_string("$from..$to"$text); }
        else { return 
    $text; }
    }
    PHP:
    $test recode2("UTF-8""windows-1251""$test");