我希望能够使用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符号