Как отправлять специальные символы в запросе к сервлетам

Я использую команду jQuery ajax, которая имеет следующие данные:

$.ajax({
type:"POST",
 ...
 data:"e=f_s&es="+JSON.stringify(email)+"&fr="+str
 ...
})

Где (email) может содержать специальный символ, например, это может быть строка:

!#$%'&+-/=?^`*{|}~ch!#$%'/=?*^`{|}@mail.com

Причина, по которой я разрешаю такие символы, основана на следующем вопросе

The problem is, at some point on the server (Java EE application), it is messing up. The special characters are not showing the boundaries of different request parameters. For example it is considering :

'/

as a parameter.
I think I need to escape characters? (if yes how?)

Что я должен сделать, чтобы иметь возможность отправлять такую ​​строку из javascript в java?


person ccot    schedule 14.08.2012    source источник
comment
У меня была похожая проблема, см. мой ответ здесь: stackoverflow.com/a/34345900/1864614   -  person razvang    schedule 18.12.2015
comment
также в будущем java и javascript сильно различаются; этот вопрос не имеет ничего общего с java. просто что-то иметь в виду; рад, что ты получил ответ   -  person AwesomeDude3247    schedule 19.04.2021


Ответы (1)


Используйте encodeURIComponent:

encodeURIComponent("!#$%'&+-/=?^`*{|}~ch!#$%'/=?*^`{|}@mail.com")

возвращение:

"!%23%24%25'%26%2B-%2F%3D%3F%5E%60*%7B%7C%7D~ch!%23%24%25'%2F%3D%3F*%5E%60%7B%7C%7D%40mail.com"
person Tomasz Nurkiewicz    schedule 14.08.2012