如何编码和解码javascript或jquery中的所有特殊字符


How to encode and decode all special characters in javascript or jquery?

我希望能够使用javascript或jquery编码和解码所有以下字符…

~ ! @ # $ % ^和 ;*()_+|}{:"?>& lt ;,./';[]'=-`

我试着用这个来编码它们…

var cT = encodeURI(oM); // oM holds the special characters
cT = cT.replace(/[!"#$%&'()*+,.'/:;<=>?@[''']^`{|}~]/g, "''''$&");

对它们进行编码,或者对它们进行转义,但是我试图用这个做相反的事情…

decodeURIComponent(data.convo.replace(/'+/g, ' '));

但是,它没有以任何想要的方式出来。

我已经为jquery构建了一个聊天插件,但是如果有人输入一个特殊字符,脚本就会崩溃。我希望对特殊字符进行编码,然后当它们从数据库中取出时,应该对它们进行解码。在数据返回到ajax请求之前,我尝试在PHP中使用urldecode,但它出现了可怕的错误。

我认为存在一些函数来编码和解码所有的特殊字符。

哦,一个警告是我用html元素包装每个消息,所以我认为解码需要在服务器端完成,在消息包装之前,或者能够知道何时忽略有效的html标记并解码用户想要输入的其他字符。

我开始编码/转义它们是错误的吗?

这就是结果糟糕的原因吗?

这在javascript中非常简单

//Note that i have escaped the " in the string - this means it still gets processed
var exampleInput = "Hello there h4x0r ~!@#$%^&*()_+|}{:'"?><,./';[]'=-`";
var encodedInput = encodeURI(exampleInput);
var decodedInput = decodeURI(encodedInput);
console.log(exampleInput);
console.log(encodedInput);
console.log(decodedInput);

对输入进行编码和解码。如果脚本中出现了其他问题,这意味着您没有剥离正在处理的内容。很难给出一个准确的答案,因为您可以看到对URI标准进行编码和解码并不会导致崩溃。只有对这些内容处理不当才会导致问题。

当你用HTML输出内容时,你应该对HTML实体进行编码。

如果你需要在javascript中编码html实体来安全地在html中显示,请参考这个线程

关于html实体如何工作的额外参考可以在这里找到:W3学校- html实体和W3学校- html符号