Странное поведение русских букв

314
14 февраля 2017, 21:35

Возьмем простейший скрипт, назовем его testget.php:

<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
setlocale(LC_ALL, 'ru_RU.UTF-8');
$rowname = "мм";
$formid = 11;
echo "<a href=\"delete.php?zname=$rowname&formid=$formid\"> Удалить </a>";
?>
</body>
</html>

и запустим из некой папки:

http://www.example.com/sp/testget.php

Если выбрать ссылку, то скрипт "вылетает" по адресу http://www.example.com/

Если заменить $rowname на одну русскую букву м, то все работает нормально и выдается текст

Not Found The requested URL /sp/delete.php was not found on this server.

Все, естественно, работает нормально, если $rowname содержит латинские символы и большинство русских букв, включая пробелы, например, "Вид програм". Но если добавить еще одну м "Вид программ" - все вылетает. Я в растерянности. Пожалуйста, подскажите, что это и как с этим бороться.

Answer 1

Для работы с нелатинскими символами (да и вообще все что отлично от цифр) в строке URL лучше всего делать через urlencode

$rowname=urlencode($rowname);

А обратное преобразование собственно через urldecode

READ ALSO
Laravel valet. &#39;Use of undefined constant SORTDATE - assumed &#39;SORTDATE&#39;

Laravel valet. 'Use of undefined constant SORTDATE - assumed 'SORTDATE'

Добрый, деньЕсть проект на ларавеле, уже живет год

296
Редирект на 404 страницу

Редирект на 404 страницу

Вhtaccess прописал:

308
Вывод из БД без перезагрузки

Вывод из БД без перезагрузки

Всем привет, подскажите пожалуйста как выводить записи из таблицы БД MySQL без перезагрузки страницы? Допустим если в БД добавилась новая строка,...

854
Проблема с таймерами

Проблема с таймерами

Суть всей задачи, которую я себе придумал - нужно сделать так, чтобы первый объект запускался функцией setInterval, причём не важно сколько раз,...

316