Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Беда с кодировкой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: передача параметра из html в php
as_pushkin
Отправлено: 17 Июня, 2010 - 22:19:51
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Ситуация такая: index.html в кодировке windows-1251:
CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Скрипт php тоже:
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/plain; charset=windows-1251')

HTML передает в PHP параметром строку. ПХП при этом видит кракозябры. Дальше он на основании этой строки делает выборку из БД, но до этого дело не доходит - он еще до формирования запроса к БД уже видит кракозябры. Пробовал все перевести на UTF-8, результат тот же. Сразу скажу: дефаулт кодировка в пхп.ини не выставлена (пробовал поставить, результат тотже). Пользую Денвер. Да, и файлы html и php сохранены в той же кодировке (windows-1251)/
Где ещё ковырять?
 
 Top
SAD
Отправлено: 17 Июня, 2010 - 23:52:40
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




попробуйте функцию
 
 Top
isle
Отправлено: 18 Июня, 2010 - 03:26:25
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




Функций перекодировок несколько, наиболее распространенная, как указал SAD - это iconv, если она присутствует на сервере, можно проверить через:

if (function_exist("iconv") {
выполнить скрипт перекодирования
} else {
Применяем альтернативу: utf8_encode() И utf8_decode()
}

$encoding = "windows-1251#; # (cp-1251)
$encod = mb_detect_encoding($name); #utf-8 - автоопределение кодировки

Чаще всего кодировка сервера идет iso-8859-1? если она принудительно в пхп не установлена. То, что вы пишете в html-коде бесполезно... на пхп всё равно идет по умолчанию кодировка, прописанная в ини-файле. Эх, по памяти не вспомню сейчас функцию в пхп, гуглить нужно. Смотрите по заголовкам ответа сервера, обычно там 8-12 строк. ;)

(Отредактировано автором: 18 Июня, 2010 - 03:32:39)

 
 Top
Champion Супермодератор
Отправлено: 18 Июня, 2010 - 08:19:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Я не увидел, что скрипт php в 1251.
as_pushkin пишет:
header('Content-Type: text/plain; charset=windows-1251')
Эта штука означает, что браузер будет отображать страницу в 1251, а чтоб сам скрипт был в 1251, его в ней надо сохранить, выбрав кодировку в редакторе. Но это важно, если только в самом скрипте в строках используется кириллица.
А вообще, одинаковая кодировка должна быть у:
-html страницы (вроде ты выставил)
-БД и таблиц (проверь)
-И кодировка соединения с БД должна быть такой же : mysql_query("set names 'cp1251'");
 
 Top
JustUserR
Отправлено: 18 Июня, 2010 - 12:48:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




as_pushkin пишет:
HTML передает в PHP параметром строку. ПХП при этом видит кракозябры
Даже если HTML-файл с формой и PHP-скрипт сохранены в одной кодировке то это не значит что форма передается и получается в ней же - на самом деле это зависит от того в какой кодировке были трактованы данные формы и переведены в urlencoded-виде Посмотрите также не используется ли данная HTML-страница вместе с JS-скриптами - которые могут обрабатыватб данные формы и быть в другой кодировке
Можете попробовать создать файл .htaccess и в нем установить директиву AddDefaultCharset windows-1251 - или сделать ручное кодирование данных в форме с помощью JS-скрипта который определяет кодировку документа в document.charset и сразу выполнять кодироване передаемых данных с помощью encodeURIComponent


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB