Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303

кодировка escape()

17.01.2013, 16:47. Показов 4550. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня проблемма с функцией escape().
Есть слово "АБО". В php urlencode() его кодирует как %C0%C1%CE, а escape() в javascript как
PHP
1
АБО
.
В описании escape() написано
"Символы, числовые значения которых больше 255 будут представлены в формате %uxxxx."
мне надо кодировать это для того что бы передать это слово как значение переменной в URL
JavaScript
1
2
3
param=escape(str);
document.forms[0].action = "index.php?x="+param;
document.forms[0].submit();
и вот после такого php не распознает АБО.
это основная проблемма.

так же непонятное что-то происходит, если кто обьяснит буду благодарен:
Есть 2 javascript функции в которые передается уже закодированное слово "АБО".
1) написана внутри php кода:
PHP
1
$str = 'АБО';
JavaScript
1
2
3
4
5
6
7
<script language="javascript">
function setURL (param)
{
document.location.href="index.php?x="+param;
}           
setURL(<?='\''.urlencode($str).'\''?>);
</script>
тоесть выполняется php скрипт, когда доходит до этого места, берет и делает URL. в итоге получаем URL:
index.php?x=%C0%C1%CE
2) функция из примера что я описал в начале. находится она в отдельном файле *.js:
JavaScript
1
2
3
4
5
6
7
8
9
function F1( params ) {
var Str = '';
  if( (params != undefined) && (params != '') )
  {
    Str = params;
  }
  document.forms[0].action = "index.php?x="+Str;
  document.forms[0].submit();
};
переменной присваивается html код, и потом он выводится где надо
PHP
1
2
$str = 'АБО';
$s .= '<a href="javascript:F1(\''.urlencode($str).'\')">CLICK</a>';
вызывается по клику. если проинспектировать страницу то увидим такой html код:
HTML5
1
<a href="javascript:F1('%C0%C1%CE')">CLICK</a>
НО! если навести на странице на ссылку эту CLICK то увидим такое: javascript:F1('АБО')
при выполнении этой функции в нее передастся не закодированно значение (как в html коде) а просто слово 'АБО'.

собственно вопрос:
почему в первом случае в функцию передалась закодированная строка, присвоилась и выполнилось все нормально, а во втором случае тоже передается строка закодированная
HTML5
1
<a href="javascript:F1('%C0%C1%CE')">CLICK</a>
но в итоге она получается не закодированная ?
тоесть если в теле функции F1 написать alert(params), то выведет АБО
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.01.2013, 16:47
Ответы с готовыми решениями:

Escape-последовательность для cookie
На разных сайтах, cookie, такие как _utmz могут быть закодированы в escape-последовательность а могут и не быть. Мне сейчас для задания...

SyntaxError: invalid escape sequence
При запуске браузер ругается. Подскажите, как imgsrc правильно завернуть, да еще так, чтобы src получило ссылку из imgsrc, а не сам ...

Escape в Си
Первый вопрос. Например есть такая Escape последовательность \e printf (&quot;\e и вывести строку начиная с определённого места. ...

6
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
17.01.2013, 16:49
encodeURIComponent()
decodeURIComponent()
1
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
17.01.2013, 16:55  [ТС]
спасибо, посмотрю.
а это встроенные функции или надо какие-то библиотеки качать что бы они работали ?

P.S. блин тут форум перекодировал слово АБО обратно. яваскрипт у меня его кодировал как % u 0 4 1 0 % u 0 4 1 1 % u 0 4 1 E (без пробелов)
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.01.2013, 17:48
Цитата Сообщение от mikh Посмотреть сообщение
это встроенные функции или надо какие-то библиотеки качать что бы они работали ?
это - методы глобального объекта
того самого Global Object, который автоматически создаётся при запуске javascript-интерпретатора
у этого объекта есть ещё несколько методов, среди них:
decodeURI ()
encodeURI ()
escape ()
eval ()
isFinite ()
isNaN ()
parseFloat ()
parseInt ()
unescape ()


ничего качать/грузить не надо
0
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
18.01.2013, 11:11  [ТС]
encodeURIComponent() закодировал слово АБО как "% D 0 % 9 0 % D 0 % 9 1 % D 0 % 9 E" (без пробелов), что собственно привело в таким же результатам, encodeURI () закодировал только кирилицу и пробелы.

видимо придется без кодировки делать
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
18.01.2013, 14:50
Цитата Сообщение от mikh Посмотреть сообщение
encodeURIComponent() закодировал слово АБО как "%D0 %90 %D0 %91 %D0 %9E" (без пробелов)
UTF-8 - так и должно быть.
0
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
18.01.2013, 17:43  [ТС]
а как тогда сделать так же phpшной функцией ? что бы она так же кодировала ?
а то по разному как-то не айс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2013, 17:43
Помогаю со студенческими работами здесь

Не работает Escape
Привет, друзья! При написании игрушки на XNA возникла проблема. При обработке следующей строчки не происходит ничего. С другими клавишами...

Escape-последовательности
Объясните, пожалуйста назначение '\a' (звонок)

Escape - sequence
Подскажите пожалуйста ,у меня не работают \v \f у меня там непонятный символ показывает на его месте ,и как понять вертикальная табуляция...

Клавиша Escape
Почему нажатие данной клавиши порой регистрируется, а порой нет. С чем это вообще связано?

Функция escape
Всем привет, не могу разобраться в одном месте, при отправки текста на русском языке появляются крокозяблы, кирилица нормально работает....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru