Javascript encodeURIComponent не кодирует одинарные кавычки
Попробуйте:
encodeURIComponent("'@#$%^&");
Если вы попробуете это, вы увидите, что все специальные символы закодированы, за исключением одиночной кавычки. Какую функцию я могу использовать для кодирования ВСЕХ символов и использования PHP для их декодирования?
Спасибо.
Ответы
Ответ 1
Я не уверен, почему вы хотите, чтобы они были закодированы. Если вы хотите избежать одиночных кавычек, вы можете использовать .replace(/'/g, "%27")
. Однако хорошие ссылки:
Ответ 2
Вы можете использовать
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, escape);
}
fixedEncodeURIComponent("'@#$%^&");
проверить ссылку http://mdn.beonex.com/en/JavaScript/Reference/Global_Objects/encodeURIComponent.html
Ответ 3
Я нашел аккуратный трюк, который никогда не пропускает никаких персонажей. Я говорю, что все заменяют, ничего не принимают. Я делаю это так (URL-кодирование):
function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}
function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}
loader.value = encode(document.body.innerHTML);
<textarea id=loader rows=11 cols=55>www.WHAK.com</textarea>
Ответ 4
Как писал @Bergi, вы можете просто заменить все символы:
function encoePicture(pictureUrl)
{
var map=
{
'&': '%26',
'<': '%3c',
'>': '%3e',
'"': '%22',
"'": '%27'
};
var encodedPic = encodeURI(pictureUrl);
var result = encodedPic.replace(/[&<>"']/g, function(m) { return map[m];});
return result;
}