Русский текст через POST отображается кракозябрами (HELP)

Программирование, которое не связано с API.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Русский текст через POST отображается кракозябрами (HELP)

Сообщение Alazaur »

На сколько я понял по виду кракозябров, данные в PHP приходят в UTF-8 а скрипт их выводит на изображение в Win-1251.
Откройте ОБА файла и HTML и PHP в Notepad++. Выставьте им кодировку "UTF-8(без BOM)". В HTML файл добавьте:

Код: Выделить всё

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
В PHP оставьте как было

Код: Выделить всё

header('Content-type: image/png');
Сохраняйте, заливайте на сервер и серверным редактором не открывайте их, раз он перекодирует.
Ну или на крайний случай воспользоваться функцией iconv если уж ничто не поможет.
P.S. Я бы вам сам сохранил эти файлы как нужно, но по ходу ко мне на комп вирус запрыгнул, не хочу вас им награждать)
wierusna
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40

Re: Русский текст через POST отображается кракозябрами (HELP)

Сообщение wierusna »

Alazaur писал(а):На сколько я понял по виду кракозябров, данные в PHP приходят в UTF-8 а скрипт их выводит на изображение в Win-1251.
Откройте ОБА файла и HTML и PHP в Notepad++. Выставьте им кодировку "UTF-8(без BOM)". В HTML файл добавьте:

Код: Выделить всё

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
В PHP оставьте как было

Код: Выделить всё

header('Content-type: image/png');
Сохраняйте, заливайте на сервер и серверным редактором не открывайте их, раз он перекодирует.
Ну или на крайний случай воспользоваться функцией iconv если уж ничто не поможет.
P.S. Я бы вам сам сохранил эти файлы как нужно, но по ходу ко мне на комп вирус запрыгнул, не хочу вас им награждать)
открыл оба файла....перекодировал в UTF-8
с HTML все ОК ..вот он http://torrentphp.16mb.com/test.html (в чарльзе запрос уходит в русском тексте ) вот скрин http://s003.radikal.ru/i202/1203/ad/cf280cdfd6ed.png
а вот в PHP опять каракули..
вчера нашел на форуме похожую проблему (у человека слово АДМИНИСТРАТОР отображалось в каракулях) вот ссылка на тему http://php.su/forum/topic.php?forum=60&topic=796
там ниже есть код который как я понял кодирует все это дело

Для ленивых кидаю код

Код: Выделить всё

     <?PHP    function win2uni($s)      {        $s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5        // преобразование iso8859-5 -> unicode:        for ($result='', $i=0; $i<strlen($s); $i++) {          $charcode = ord($s[$i]);          $result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];        }        return $result;      }    if (isset($_REQUEST['text'])) {            ///Выполняем скрипт, создаем юзербар            $element = $_REQUEST['text'];            if ($element=='Jos'){$btext='Jos - Администратор';} else            if ($element=='Vamt'){$btext='Vamt - Модератор';} else            {$btext=$element;}                $ctext=win2uni($btext);            header("Content-type: image/jpeg");            $im = @ImageCreateFromJPEG ("userbar.jpg") ;            $color = imagecolorallocate($im, 255, 255, 255);            imagettftext($im, 10, 0, 45, 13, $color, "Visitor TT2 -BRK-.ttf", $ctext);            imagejpeg($im, NULL, 100);            imagedestroy($im);    } else {            // пишем форму            print <<<FORM    <form method="POST">    <input type="text" name="text">    <input type="submit" value="send">    </form>    FORM;    }    ?> 
Помогите внедрить функцию в мой PHP
wierusna
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40

Re: Русский текст через POST отображается кракозябрами (HELP)

Сообщение wierusna »

вообщем сварганил что то ....но пишет что изображение содержит ошибки (файл сохранен в win 1251) но думаю кодировка тут не причем
что не так?

Код: Выделить всё

     <?php    function win2uni($s)      {        $s = convert_cyr_string($s,'w','i');        for ($result='', $i=0; $i<strlen($s); $i++) {          $charcode = ord($s[$i]);          $result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];        }        return $result;      }    if (isset($_REQUEST['text'])) {             $textimg1 = $_REQUEST['text'];            $btext=$textimg1;            $ctext=win2uni($btext);$im = imagecreate(100, 30);$textimg1 = $_POST['text'];// White background and blue text$bg = imagecolorallocate($im, 255, 255, 255);$textcolor = imagecolorallocate($im, 0, 0, 255); // Write the string at the top leftimagestring($im, 5, 0, 0, $ctext, $textcolor); // Output the imageheader('Content-type: image/png'); imagepng($im);imagedestroy($im);    } else {                       ?>     <form method="POST">    <input type="text" name="text">    <input type="submit" value="send">    </form>    <?php } ?>       
Ответить