Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: windows-1251 -> utf-8 через php
 
 автор: Qiao   (03.10.2007 в 19:03)   письмо автору
 
 

Подскажите, пожалуйста, как сделать чтобы сайты с кодировкой windows-1251 могли работать с русским языком через гугль.

Никаких сокетов, всё элементарно - вводиш в форму запрос, выскакивает страница гугля и ищет по сайту:

<form method="get" action="http://www.google.com/search">
<input type="text"   name="q" value="" />
<input type="submit" value="Google Search" />
<input type="radio"  name="sitesearch" value="softtime.ru" checked />


Если кодировка страницы utf8, то без проблем. А вот windows-1251 - и русские коверкает.
Как мне кажется, тут без php не обойтись.
Попробовал iconv() и mb_convert_encoding() - что-то ничего не получается.

===============

Нашёл!:
iconv("windows-1251", "utf-8", "гугугу");

А как эту функцию запихнуть в ту форму? Как сначала обработать ввод и лишь потом отсылать гуглю?

   
 
 автор: EXP   (04.10.2007 в 01:03)   письмо автору
 
   для: Qiao   (03.10.2007 в 19:03)
 

поменять action в form
и сделать обработчик
<?php
header
'Location:http://www.google.com/search?sitesearch=' . @$_GET['sitesearch'] . '&amp;q=' iconv("windows-1251""utf-8"$_GET['q'] ) );
exit;
// проверки данных только придётся делать
?>

   
 
 автор: Qiao   (04.10.2007 в 10:44)   письмо автору
 
   для: EXP   (04.10.2007 в 01:03)
 

Спасибо, работает. Но тогда ешё надо urlencode добавить, чтоб совсем хорошо было:

header( 'Location:http://www.google.com/search?q=' .urlencode(iconv("windows-1251","utf-8",$_GET['q'])). '&sitesearch='.$_GET['sitesearch']);


А о каких проверках данных вы говорите? Вроде и так всё нормально. И зачем там @ использовали?


<off>Как вы код цветным делаете?

   
 
 автор: EXP   (04.10.2007 в 19:53)   письмо автору
 
   для: Qiao   (04.10.2007 в 10:44)
 

если честно , я и сам незнаю как обработать правильно эти пару $_GET :)
вообще наверное для того что-бы этот файл нормально работал на любом хостинге,
надо учесть все возможные включения/выключения дирректив, и предотвратить возможные попытки взлома.
@ стоит на случай если просто зайдут на адресс обработчика без такого GET-параметра и как-раз окажется так что на сервере случайно не выключено error_reporting E_NOTICE :) вобщем есть риск получить предупрежденеие уровня NOTICE )
может ещё быть включено/ выключено magic_quote_gpc и ещё всякие разности ))

тоже вопросами мучаюсь ещё , почему urlencodированные данные сами urldecodируются , и не показалось-ли однажды что увеличилась скорость работы скрипта , когда я стал их принудительно urldecodировать :)
возможно дажке правильнее добавить rawurlencode()

а цвета внутри <code></code> появляются после <? , если без них , то только на форуме C++ :)

   
 
 автор: Qiao   (05.10.2007 в 02:50)   письмо автору
 
   для: EXP   (04.10.2007 в 19:53)
 

Ура! Теперь я знаю как код цветным делать!! Большое спасибо!!!!!

Что ещё любопытно, работает как с urlencode так и без. Во втором случае в адрессной строке появляется непривычная для гугля бяка, но всё работает:
http://www.google.com/search?q=С…РѕРїР°&sitesearch=softtime.ru


А вообще, стройте, люди, utf-only сайты. И не парьте себе и другим мозги. UNICODE правит миром!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования