Проблем при GET с windows-1251

Искам да си направя една страница за търсене като думата за търсене се взима с GET примерно:
Код:
search.php?searchword=дума

Когато използвам дума на латиница всичко е наред но като използвам кирилица ми изкарва нещо от рода на: РґСѓРјР°
Страницата ми е с енкодинг windows-1251 като сменя енкодинка през браузъра на UTF-8 ми изкарва думата както трябва но всичко останало (кирилицата) е �������.

Има ли начин още в PHP кода да променя само променливата в UTF-8 за да си я използвам по-нататък.. :idea:
 
UTF-8 without bom?

А другото е ако земаш от MySQL думата в config.php файла си слагаш
PHP:
@mysql_query('SET NAMES UTF-8');

това с което мога да ти помогна аз друго немога :)
 
goshkoy каза:
UTF-8 without bom?

А другото е ако земаш от MySQL думата в config.php файла си слагаш
PHP:
@mysql_query('SET NAMES UTF-8');

това с което мога да ти помогна аз друго немога :)

Не знам какво е UTF-8 without bom и не взимам думата от mysql а от потребителя.
 
Пробвай като на файла най, най-отгоре, още в началото на първия ред от файла сложиш.

PHP:
<?php header('Content-Type: text/plain; charset=windows-1251'); ?>
или ако не стане пробвай с:

PHP:
<?php header('Content-Type: text/plain; charset=utf-8'); ?>

ИЗБЕРИ САМО ЕДИН ОТ 2 ТА ВАРИЯНТА.


-----------------------------------------------------------------------------------

Ако не стане в една тема по-назад бях обяснил какво да се направи.

Ето го:

1. Така първо сваляш програмта: notepad ++.
Правиш си всички файлове на сайта ти "utf-8 without BOM" през notepad ++

2. На всеки файл в <head> Тага слагаш:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

3. Базата данни си е правиш utf8_general_ci.

4. Таблиците в базата дани ги правиш utf8_general_ci.

5. Полетата в таблиците ги правиш utf8_general_ci.

6. Преди всяка заявка към базата данни в кода ти слагаш.



PHP:
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");


Тоест към точка 6, трябва да излгежда така:


PHP:
//kod ...

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

$row=mysql_query("SELECT smth FROM somewhere");

// kod ...
 
Можеш да конвертираш думата преди search-a с iconv:

PHP:
$searchphrase = iconv( 'UTF-8' , 'CP1251', $_GET['searchword']);

но по-добрата практика е всичко да ти е на UTF-8. Аз лично ползвам CP1251 само когато работя с MS SQL 2000.
 
eddyy93 каза:
Пробвай като на файла най, най-отгоре, още в началото на първия ред от файла сложиш.

PHP:
<?php header('Content-Type: text/plain; charset=windows-1251'); ?>
или ако не стане пробвай с:

PHP:
<?php header('Content-Type: text/plain; charset=utf-8'); ?>

ИЗБЕРИ САМО ЕДИН ОТ 2 ТА ВАРИЯНТА.


-----------------------------------------------------------------------------------

Ако не стане в една тема по-назад бях обяснил какво да се направи.

Ето го:

1. Така първо сваляш програмта: notepad ++.
Правиш си всички файлове на сайта ти "utf-8 without BOM" през notepad ++

2. На всеки файл в <head> Тага слагаш:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

3. Базата данни си е правиш utf8_general_ci.

4. Таблиците в базата дани ги правиш utf8_general_ci.

5. Полетата в таблиците ги правиш utf8_general_ci.

6. Преди всяка заявка към базата данни в кода ти слагаш.



PHP:
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");


Тоест към точка 6, трябва да излгежда така:


PHP:
//kod ...

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

$row=mysql_query("SELECT smth FROM somewhere");

// kod ...

Моят проблем беше, че данните от базата данни излизаха в браузъра като гарги вместо на кирилица. Страниците и файловете съм ги кодирал в utf8 no bom, но полетата на базата данни бяха cp1251_general_ci. Пробвах да ги сменя и тях на utf8_general_ci, но резултата си оставаше същия. Най-странното за мен е факта, че преди това съм правил база данни с 1251-кодировка и такива проблеми не съм имал. Нямам обяснения защо при идентична структура на базите данни, резултатите са различни от гледна точка на символната кодировка. След като пусна заявката от т.6 всичко се оправя, но ми се ще да има по-лесен начин, в който веднъж се правят настройките.
Ако някой може да даде информация, ще съм му искрено благодарен.
 

Back
Горе