С нами с 15.06.10
Сообщения: 1722
Рейтинг: 52
|
Добавлено: 21/02/13 в 18:39 |
$string1="по немецки";
Если кодирую переменную $string1 через urlencode выводит одно.
Если получаю $string1 через $_SERVER['REQUEST_URI']и кодирую тем же urlencode выходит другое
Почему так происходит ?
Как исправить положение ?
Последний раз редактировалось: cherchell2010 (21/02/13 в 22:24), всего редактировалось 2 раз(а)
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 21/02/13 в 18:48 |
cherchell2010: потому что в GET он уже закодирован, и ты повторно его кодируешь.
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7614
Рейтинг: 5760
|
Добавлено: 21/02/13 в 19:01 |
Код: |
urlencode(urldecode($any_string));
|
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 21/02/13 в 19:32 |
Sterx: зачем?
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7614
Рейтинг: 5760
|
Добавлено: 21/02/13 в 19:35 |
а непонятно? такие теории развел в теме про С, а тут непонятно
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 21/02/13 в 19:36 |
Sterx: ты получишь тоже самое что и в гет, зачем делать лишние телодвижения?
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7614
Рейтинг: 5760
|
Добавлено: 21/02/13 в 19:39 |
просто проигнорируй мессадж
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 21/02/13 в 19:45 |
Sterx: нет мне таки интересно, на хрена советовать человек решение его проблемы если то что он делает это лишние?
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7614
Рейтинг: 5760
|
Добавлено: 21/02/13 в 19:49 |
Оффтопик:
отличие МХ от программерских форумов - здесь никто никого не учит как надо. дискуссия с тобой мне неинтересна, я ответил ТС
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 21/02/13 в 19:53 |
Sterx: Оффтопик: то есть, тут могут посоветовать лишние тело движения для адлата?
|
|
|
|
С нами с 15.06.10
Сообщения: 1722
Рейтинг: 52
|
Добавлено: 21/02/13 в 22:23 |
Не верно написал , не GET Method
получаем данные из $_SERVER['REQUEST_URI']
Хотя с GET таже самая ситуация
Замеченная проблема возникает с символами не латинского алфавита.
|
|
|
|
С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365
|
Добавлено: 21/02/13 в 23:17 |
Тебе же написали.
Дартаньян писал: | cherchell2010: потому что в GET он уже закодирован, и ты повторно его кодируешь. |
Не нужно кодировать то, что и так уже закодировано.
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 21/02/13 в 23:20 |
cherchell2010:
Если я правильно понял автора, то ему надо это.
Код: [развернуть] | urlencode(urldecode($_SERVER['REQUEST_URI']).$string); |
|
|
|
|
С нами с 15.06.10
Сообщения: 1722
Рейтинг: 52
|
Добавлено: 21/02/13 в 23:30 |
похоже вы упорно не видите мою проблему.
$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
|
|
|
|
С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365
|
Добавлено: 21/02/13 в 23:42 |
cherchell2010 писал: | Во всех трех случаях имеем разные значения одинаковой переменной |
Потому что файлы надо сохранять в соответствующей кодировке. Сохрани в utf-8, запусти и получишь, что $i равно $i2.
|
|
|
|
С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032
|
Добавлено: 21/02/13 в 23:42 |
Вот что твой код выдает у меня
Код: | бла-бла-бла
%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 раз
|
|
apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only
|
0
|
|
|
С нами с 15.06.10
Сообщения: 1722
Рейтинг: 52
|
Добавлено: 21/02/13 в 23:44 |
вот же ж я писал
у меня выдает
бла-бла-бла
%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 раз
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 21/02/13 в 23:47 |
johndoe2: опередил гад.
|
|
|
|
С нами с 15.06.10
Сообщения: 1722
Рейтинг: 52
|
Добавлено: 21/02/13 в 23:54 |
сижу , думаю, как у исполняемого php файла может быть кодировка. Че то не пойму.
По поводу iconv , что делать если язык переменной заранее не известен ?
|
|
|
|
С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032
|
Добавлено: 21/02/13 в 23:56 |
cherchell2010 писал: | Какие файлы, я вам привел простой пример с переменными.
Или под файлами подразумевается сам код php ? |
Тестовый код, который ты привёл, сохранён в файле, который ты же открываешь в своём же браузере. Именно этот файл у тебя же сохранён в кодировке cp1251, и поэтому строка $q2="бла-бла-бла"; тоже имеет эту кодировку же. А современные браузеры кириллицу, вписанную в адресную строку, передают в виде utf-8. Отсюда и разница: $q поступает в скрипт в кодировке utf-8, а $q2 в нём же - в cp1251. С какой радости не-ascii символам в этих строках быть одинаковыми?
|
|
apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only
|
1
|
|
|
С нами с 15.06.10
Сообщения: 1722
Рейтинг: 52
|
Добавлено: 22/02/13 в 00:05 |
Как быть в случае передачи переменной на японском, немецком, русском и простой латиницы ?
|
|
|
|
С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032
|
Добавлено: 22/02/13 в 00:09 |
cherchell2010 писал: | Как быть в случае передачи переменной на японском, немецком, русском и простой латиницы ? |
Забудь об однобайтовых кодировках и распишись в получении месячного проездного в рай. Работай с utf-8 и всё тут
|
|
apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only
|
2
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 22/02/13 в 10:51 |
еще кто-то не в utf-8? ну капец...
cherchell2010: та хоть китайцы с ихними 2к иероглифами - все поместяца в утф-8. два байта, понимаешь? 65к символов, а тыт тут про своих немцев... юзай гугл. ты первый, кого я послал на гугол, но уже накипело. мастер-х разработан для порнушников, а не для недопрограммистов, таких как ты и я...
еще насчет "как у исполняемого php файла может быть кодировка."
что есть исполняемый пхп файл? когда и кем он исполняется? давай так: исполняемый тхт файл - таких - пруд пруди. и исполняются похлеще пхп кода.
давайте не путать Божий Дар с яишницей. кодировка файла решает тоже, но не вздумай утф8 с заголовком писать, моск сломаешь об первые три байта файла...
уровень топикстартера-кодера мне ясен. и меня берет ужос, когда я понимаю, что есть кодеры, которые на меня глядят так-же... но у меня хватает признаться... понимэшь?
учись, студент
мир всем!
|
|
|
|
С нами с 21.08.12
Сообщения: 102
Рейтинг: 17
|
Добавлено: 23/02/13 в 23:48 |
По теме: ТС - исполняемый файл пхп - это всего лишь текстовый файл, с расширением php, который интерпретируется в код.
Каждый текстовый файл имеет свою кодировку.
Чтобы не было проблем - юзай UTF-8 without BOM.
Как уже отмечалось выше, UTF-8 - 2 байта на символ, тобишь около 65к различных вариантов символа. Китайский язык с их иероглифами меркнет, по-сравнению с такой кодировкой.
Удачи в будущем кодинге)
З.Ы. За что минусуете-то?)
|
|
|
|