Есть скрипт генерации изображения.
PHP |
<?php Header("Content-type: image/jpeg"); $name = $_GET['name']; $string = $name.'!'; $string2 = $name.'!'; $im= ImageCreateFromJPEG("1.jpg"); $LightGrey= ImageColorAllocate($im, 250, 0, 0); $white= ImageColorAllocate($im, 203, 1, 1); $font = imageloadfont('1.gdf'); ImageString($im, $font, 30, 120, $string, $LightGrey); ImageString($im, $font, 30, 120, $string2, $white); Imagejpeg($im); ImageDestroy($im); |
Переменная передается ссылкой вида
PHP |
<a href="card.php?name='.$name.'" target="_blank"> |
Русские слова выводятся адекватно.
Но решил использовать это в другом проекте, с применением Javascript, тут текст передается через форму аякс-запросом методом get также как в вышеуказанной ссылке. Но почему-то возвращает кракозябру.
Скрипт ТОТ ЖЕ САМЫЙ, скопипастеный.
Все файлы - в utf-8.
В чем тут может быть проблема? почему, проходя через яву, кодировка кракозябрится?
Вывел отображение строки запроса для теста, в общем на сервер уходит строка вида (слово "Привет")
HTML |
card.php?&name=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82 |
Все равно ничего не понял.
Спустя 22 минуты, 17 секунд (8.08.2009 - 17:29) glock18 написал(а):
Хтмл какая у тебя кодировка? видимо, не утф.
Браузер кодирует переменные запроса а утф8 перед передачей серверу. Та строку, что привел ты, и есть - преставление строки в утф8.
Если у тебя хтмл енкодин стоит утф8, то должно быть все ок. Если нет, то тебе нужно переводить из утф8 в твою кодировку (цп1251, возможно) параметры при получении на сервере, а вывод данных кодировать обратно - из цп1251 в утф8.
PS: еще объясни, каким образом тема топика связана с твоим вопросов?
Спустя 4 минуты, 28 секунд (8.08.2009 - 17:34) Grey написал(а):
Да в том-то и дело что везде utf-8
Сервер:
Цитата |
Date: Sat, 08 Aug 2009 14:32:41 GMT Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4 Accept-Ranges: bytes Content-Length: 2530 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 200 OK |
Страница с формами:
HTML |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
Цитата |
PS: еще объясни, каким образом тема топика связана с твоим вопросов? |
Да вроде очевидно. Текст выводится кракозябрами на изображение. Причем пока нет явы - нормально, когда есть - ненормально.
Спасибо, все получилось. Нужно было в скрипте генерации перекодировать UTF-8 в Windows-1251
PHP |
$name = iconv('UTF-8', 'Windows-1251', $name); |
Понять не понял, но получилось.