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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
STRELOK
Отправлено: 21 Декабря, 2011 - 18:33:33
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Доброго времени суток!

Разрабатываю новый движок сайта, решил все делать на UTF8. Сам сайт, база данных работает прекрасно. Но столкнулся с проблемой.

страничка в утф, в htaccess стоит утф, контанттайп стоит утф. Больше я уже не знаю, где и как можно указать.

test.php?test=Тест >>> test.php?test=%D2%E5%F1%F2

PHP:
скопировать код в буфер обмена
  1.  
  2.  $test = rawurldecode($_GET['test']);
  3.  echo $test . "<br>\n";
  4.  
  5.  //это разумеется тоже не пашет
  6.  echo mysqli_query($mysqli, "INSERT INTO `test` (`value`) VALUES ('".$test."')");
  7.  


выводит 4 квадратика.

Подскажите пожалуйста, в какую сторону копать? И есть ли какие то подводные камни при работе со строками?
 
 Top
Slesher
Отправлено: 21 Декабря, 2011 - 18:40:46
Post Id


Гость


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


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




ну а просто $test? И что записывается в БД?
Отображает ли браузер при выборе хъоть какой-то кодировке?
 
 Top
STRELOK
Отправлено: 21 Декабря, 2011 - 18:43:51
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Slesher пишет:
ну а просто $test? И что записывается в БД?
Отображает ли браузер при выборе хъоть какой-то кодировке?

В БД запись не добавляется вообще. Могу попробовать через mysql драйвер а не через mysqli.

На счет браузера, сейчас проверю.

Просто тест - 4 квадрата

Òåñò - ISO-8859-1
Тест - Кириллица Windows

(Отредактировано автором: 21 Декабря, 2011 - 18:46:44)

 
 Top
Slesher
Отправлено: 21 Декабря, 2011 - 19:56:47
Post Id


Гость


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


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




STRELOK, ну значит строка кодируется в cp-1251, походу %D2%E5%F1%F2 передает строку именно так. Или меняйте настройки браузера, чтобы юрл иная была, или на стороне скрипта меняйте настройки.
 
 Top
tuareg
Отправлено: 21 Декабря, 2011 - 20:23:25
Post Id


Участник


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


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




Попробуйте
 
 Top
STRELOK
Отправлено: 21 Декабря, 2011 - 21:13:42
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




tuareg пишет:
$test = urldecode($_GET['test']);

Также
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Декабря, 2011 - 22:18:31
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. header("Content-Type: text/html; charset=utf-8");
Есть?
 
 Top
Panoptik
Отправлено: 21 Декабря, 2011 - 22:50:23
Post Id



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


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




а сам файл в какой кодировке сохранен? test.php который???


-----
Just do it
 
 Top
STRELOK
Отправлено: 22 Декабря, 2011 - 08:07:33
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Panoptik пишет:
а сам файл в какой кодировке сохранен? test.php который???


страница в utf8 без BOM
в htaccess utf8
в хидерах utf8
в странице указан utf8

в соединении с БД тоже utf8, база данных тожу утф, таблица тоже утф. Русские, японские символы отображаются нормально.

(Отредактировано автором: 22 Декабря, 2011 - 08:09:25)

 
 Top
Мелкий Супермодератор
Отправлено: 22 Декабря, 2011 - 09:46:34
Post Id



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


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


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




0)
STRELOK пишет:
test.php?test=Тест >>> test.php?test=%D2%E5%F1%F2

Почему? Должно быть %D1%82%D0%B5%D1%81%D1%82
1) rawurldecode зачем? PHP самостоятельно декодирует $_GET.


-----
PostgreSQL DBA
 
 Top
STRELOK
Отправлено: 22 Декабря, 2011 - 21:31:43
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Мелкий пишет:
0)
STRELOK пишет:
test.php?test=Тест >>> test.php?test=%D2%E5%F1%F2

Почему? Должно быть %D1%82%D0%B5%D1%81%D1%82
1) rawurldecode зачем? PHP самостоятельно декодирует $_GET.


Работает блин... И как быть теперь? Ведь "тест" сам браузер кодирует! Проверял на лисе, хроме, опере
 
 Top
Мелкий Супермодератор
Отправлено: 23 Декабря, 2011 - 08:49:36
Post Id



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


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


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




Эксперименты:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. var_dump($_GET, $_SERVER["REQUEST_URI"]);

Опера - ok
FF - провал
Chrome - провал
Но все трое обратились по одному адресу и передали %D1%82%D0%B5%D1%81%D1%82

Мануальное указание кодировки:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. header('Content-Type: text/html; charset=utf-8');
  3. ?>
  4. <html>
  5.     <head>
  6.         <meta http-equiv=Content-Type content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <a href="?f=тест">тестовая ссылка</a>
  10. <?var_dump($_GET, $_SERVER["REQUEST_URI"]);?>
  11. </body>
  12. </html>

Все трое - ок.


-----
PostgreSQL DBA
 
 Top
STRELOK
Отправлено: 24 Декабря, 2011 - 14:58:51
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Да, но. Если ввести в адресной строке test2.php?f=Тест то мы опять вернемся к самому началу, т.е. f=%F2%E5%F1%F2.

При этом:

PHP:
скопировать код в буфер обмена
  1. <?
  2.  $fu = $_GET['f'];
  3.  var_dump($fu);
  4.  echo "<br>";
  5.  echo mb_detect_encoding($fu);
  6. ?>


отображает вот что:

string(4) "����"
UTF-8
 
 Top
Мелкий Супермодератор
Отправлено: 24 Декабря, 2011 - 15:14:09
Post Id



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


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


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




STRELOK пишет:
Если ввести в адресной строке test2.php?f=Тест то мы опять вернемся к самому началу, т.е. f=%F2%E5%F1%F2.

Так вот это-то мне повторить и не удалось. Все протестированные браузеры отправляли один и тот же запрос.
Хм. Мысля, момент.
Да, под виндой - запрос пошёл на %F2%E5%F1%F2, т.е. cp1251


-----
PostgreSQL DBA
 
 Top
STRELOK
Отправлено: 24 Декабря, 2011 - 15:18:16
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Мелкий пишет:
STRELOK пишет:
Если ввести в адресной строке test2.php?f=Тест то мы опять вернемся к самому началу, т.е. f=%F2%E5%F1%F2.

Так вот это-то мне повторить и не удалось. Все протестированные браузеры отправляли один и тот же запрос.
Хм. Мысля, момент.
Да, под виндой - запрос пошёл на %F2%E5%F1%F2, т.е. cp1251


В том то и дело... почему тогда mb определяет как утф?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB