За последние 24 часа нас посетили 16572 программиста и 1578 роботов. Сейчас ищут 935 программистов ...

Проблемы с кодировкой

Тема в разделе "PHP для новичков", создана пользователем Luter1984, 13 дек 2010.

  1. Luter1984

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

    С нами с:
    9 ноя 2010
    Сообщения:
    66
    Симпатии:
    0
    Как сменить кодировку в phpmyadmin на utf-8? если изначально все таблицы формировались как cp-1251
    И как правильно сменить кодировку всех страниц сайта тоже на utf-8
     
  2. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    в pma Операции > Параметры таблицы > Сравнение
    файлы можно открыть через блокнот (или другие программы) > сохранить как > (в низу под названием файла кодировка).
    Это конкретно на файл ставить.
     
  3. Luter1984

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

    С нами с:
    9 ноя 2010
    Сообщения:
    66
    Симпатии:
    0
    Так можно, но зачастую если объявляются сессии возникает ошибка BOM – маркер (сигнатура) для UTF-8 файлов, пришлось менять кодировки в UTF-8 в программе Notepad++...(после того как все проделал вручную :) )
    Затем столкнулся с еще одной ошибкой: один браузер загружался по умолчанию с кодировкой cp-1251, другой с UTF-8. При этом все файлы уже были в UTF - 8 (таблицы в базе включительно). Вышел из положения тем, что вписал после подключения к базе:
    PHP:
    1. mysql_query("SET NAMES 'utf8'");
    2. header("Content-type: text/html; charset=utf-8");
     
  4. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Часть хедера письма

    Код (Text):
    1.  
    2. Content-Type: text/plain; charset=koi8-r
    Тема: =?koi8-r?B?8NLJzcXSINDJ09jNwQ==?=
    Сообщение: =F4=C5=CC=CF =D0=C9=D3=D8=CD=C1

    Всё перепробовал, не декодится сцуко. (в ход пускал пару функций декода в ютф8 из виндовских кодировок, base64, iconv, imap_imap_base64 и др. - не берёт)

    Подскажите пожалуйста как быть. :?:
     
  5. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Вобщем разобрался!

    Напишу всем тем кому понадобится, ибо реально в нете нету решения, а если есть, то через задницу или на русояпонском языке.

    Код (Text):
    1. Сообщение: =F4=C5=CC=CF =D0=C9=D3=D8=CD=C1
    Использовать:

    1. quoted_printable_decode($str);

    cразу после него

    2. iconv("koi8-r", "utf-8", $str);

    Всё заработает.

    Код (Text):
    1. Тема: =?koi8-r?B?8NLJzcXSINDJ09jNwQ==?=
    Здесь веселее. Нафига так усложнять работу... неважно, вот проверенный способ привести всё в нужный вид:

    Использовать:

    1. str_replace('=?koi8-r?B', '', $str); // это конечно недальновидно, это просто для примера. Строка не всегда может быть таковой - суть в том чтобы убрать этот префикс

    2. base64_decode($str);

    3. iconv("koi8-r", "utf-8", $str);

    Всё работает :)