Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Urlencode() с $_SERVER['REQUEST_URI'] и без
Новая тема
Ответить
цитата
21/02/13 в 18:39
cherchell2010
$string1="по немецки";
Если кодирую переменную $string1 через urlencode выводит одно.
Если получаю $string1 через $_SERVER['REQUEST_URI']и кодирую тем же urlencode выходит другое
Почему так происходит ?
Как исправить положение ?
Последний раз редактировалось: cherchell2010 (
21/02/13 в 22:24
), всего редактировалось 2 раз(а)
цитата
21/02/13 в 18:48
Дартаньян
cherchell2010:
потому что в GET он уже закодирован, и ты повторно его кодируешь.
цитата
21/02/13 в 19:01
Sterx
Код:
urlencode(urldecode($any_string));
цитата
21/02/13 в 19:32
Дартаньян
Sterx:
зачем?
цитата
21/02/13 в 19:35
Sterx
а непонятно? такие теории развел в теме про С, а тут непонятно
цитата
21/02/13 в 19:36
Дартаньян
Sterx:
ты получишь тоже самое что и в гет, зачем делать лишние телодвижения?
цитата
21/02/13 в 19:39
Sterx
просто проигнорируй мессадж
цитата
21/02/13 в 19:45
Дартаньян
Sterx:
нет мне таки интересно, на хрена советовать человек решение его проблемы если то что он делает это лишние?
цитата
21/02/13 в 19:49
Sterx
Оффтопик:
отличие МХ от программерских форумов - здесь никто никого не учит как надо. дискуссия с тобой мне неинтересна, я ответил ТС
цитата
21/02/13 в 19:53
Дартаньян
Sterx:
Оффтопик:
то есть, тут могут посоветовать лишние тело движения для адлата?
цитата
21/02/13 в 22:23
cherchell2010
Не верно написал , не GET Method
получаем данные из $_SERVER['REQUEST_URI']
Хотя с GET таже самая ситуация
Замеченная проблема возникает с символами не латинского алфавита.
цитата
21/02/13 в 23:17
Mika
Тебе же написали.
Дартаньян писал:
cherchell2010:
потому что в GET он уже закодирован, и ты повторно его кодируешь.
Не нужно кодировать то, что и так уже закодировано.
цитата
21/02/13 в 23:20
Дартаньян
cherchell2010:
Если я правильно понял автора, то ему надо это.
urlencode(urldecode($_SERVER['REQUEST_URI']).$string);
цитата
21/02/13 в 23:30
cherchell2010
похоже вы упорно не видите мою проблему.
$q=бла-бла-бла -посылаем через GEТ
<?
header("Content-Type: text/html; charset=utf-8");
extract($_REQUEST);
$q2="бла-бла-бла";
$i=urlencode($q);
$i2 =urlencode($q2);
echo $q;
echo "<br>";
echo $i;
echo "<br>";
echo $i2;
?>
Во всех трех случаях имеем разные значения одинаковой переменной
бла-бла-бла
%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0
%E1%EB%E0-%E1%EB%E0-%E1%EB%E0
Все что мне надо, это получить %E1%EB%E0-%E1%EB%E0-%E1%EB%E0 из гет метода
А вышенаписаный код выдает %D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0
цитата
21/02/13 в 23:42
Mika
cherchell2010 писал:
Во всех трех случаях имеем разные значения одинаковой переменной
Потому что файлы надо сохранять в соответствующей кодировке. Сохрани в utf-8, запусти и получишь, что $i равно $i2.
цитата
21/02/13 в 23:42
johndoe2
Вот что твой код выдает у меня
Код:
бла-бла-бла
%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0
%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0
Результат предсказуем т.к. $q == 'бла-бла-бла' и следовательно $q и $q2 равны.
Другое дело, если твой файл, в котором написано $q2="бла-бла-бла"; имеет кодировку, отличную от utf-8.
Ты бы показал, что именно выдает тебе "Во всех трех случаях имеем разные значения".
upd
%E1%EB%E0-%E1%EB%E0-%E1%EB%E0 говорит о том, что твой файл в кодировке cp1251
upd2
если менять кодировку файла нельзя, бери iconv('utf-8','cp1251',$_GET['q']) вместо $_GET['q']
Последний раз редактировалось: johndoe2 (
21/02/13 в 23:45
), всего редактировалось 1 раз
цитата
21/02/13 в 23:44
cherchell2010
вот же ж я писал
у меня выдает
бла-бла-бла
%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0-%D0%B1%D0%BB%D0%B0
%E1%EB%E0-%E1%EB%E0-%E1%EB%E0
Какие файлы, я вам привел простой пример с переменными.
Или под файлами подразумевается сам код php ?
Последний раз редактировалось: cherchell2010 (
21/02/13 в 23:51
), всего редактировалось 1 раз
цитата
21/02/13 в 23:47
Дартаньян
johndoe2:
опередил гад.
цитата
21/02/13 в 23:54
cherchell2010
сижу , думаю, как у исполняемого php файла может быть кодировка. Че то не пойму.
По поводу iconv , что делать если язык переменной заранее не известен ?
цитата
21/02/13 в 23:56
johndoe2
cherchell2010 писал:
Какие файлы, я вам привел простой пример с переменными.
Или под файлами подразумевается сам код php ?
Тестовый код, который ты привёл, сохранён в файле, который ты же открываешь в своём же браузере. Именно этот файл у тебя же сохранён в кодировке cp1251, и поэтому строка $q2="бла-бла-бла"; тоже имеет эту кодировку же. А современные браузеры кириллицу, вписанную в адресную строку, передают в виде utf-8. Отсюда и разница: $q поступает в скрипт в кодировке utf-8, а $q2 в нём же - в cp1251. С какой радости не-ascii символам в этих строках быть одинаковыми?
цитата
22/02/13 в 00:05
cherchell2010
Как быть в случае передачи переменной на японском, немецком, русском и простой латиницы ?
цитата
22/02/13 в 00:09
johndoe2
cherchell2010 писал:
Как быть в случае передачи переменной на японском, немецком, русском и простой латиницы ?
Забудь об однобайтовых кодировках и распишись в получении месячного проездного в рай. Работай с utf-8 и всё тут
цитата
22/02/13 в 10:51
AWD
еще кто-то не в utf-8? ну капец...
cherchell2010:
та хоть китайцы с ихними 2к иероглифами - все поместяца в утф-8. два байта, понимаешь? 65к символов, а тыт тут про своих немцев... юзай гугл. ты первый, кого я послал на гугол, но уже накипело. мастер-х разработан для порнушников, а не для недопрограммистов, таких как ты и я...
еще насчет "как у исполняемого php файла может быть кодировка."
что есть исполняемый пхп файл? когда и кем он исполняется? давай так: исполняемый тхт файл - таких - пруд пруди. и исполняются похлеще пхп кода.
давайте не путать Божий Дар с яишницей. кодировка файла решает тоже, но не вздумай утф8 с заголовком писать, моск сломаешь об первые три байта файла...
уровень топикстартера-кодера мне ясен. и меня берет ужос, когда я понимаю, что есть кодеры, которые на меня глядят так-же... но у меня хватает признаться... понимэшь?
учись, студент
мир всем!
цитата
23/02/13 в 23:48
Maje
По теме: ТС - исполняемый файл пхп - это всего лишь текстовый файл, с расширением php, который интерпретируется в код.
Каждый текстовый файл имеет свою кодировку.
Чтобы не было проблем - юзай UTF-8 without BOM.
Как уже отмечалось выше, UTF-8 - 2 байта на символ, тобишь около 65к различных вариантов символа. Китайский язык с их иероглифами меркнет, по-сравнению с такой кодировкой.
Удачи в будущем кодинге)
З.Ы. За что минусуете-то?)
Новая тема
Ответить
Эта страница в полной версии