我希望能够使用javascript或jquery编码和解码所有以下字符...
!〜@#$%^&安培; *()_ + |} {:?“><,/'; [] \ = - `
我尝试使用此编码...
var cT = encodeURI(oM); // oM holds the special characters
cT = cT.replace(/[!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g, "\\\\$&");
哪个对它们进行编码,或者相反地逃避它们,但后来我试图用这个来反过来......
decodeURIComponent(data.convo.replace(/\+/g, ' '));
但是,它并没有以任何方式出现。
我为jquery构建了一个聊天插件,但如果有人输入特殊字符,脚本会崩溃。我想要对特殊字符进行编码,然后当它们从数据库中拉出时,它们应该被解码。在数据返回到ajax请求之前,我尝试在PHP中使用urldecode,但它出现了可怕的错误。
我认为存在一些编码和解码所有特殊字符的功能。
哦,有一点需要注意的是,我用html元素包装每条消息,所以我认为解码需要在服务器端完成,包装消息之前,或者能够知道何时忽略有效的html标签并解码用户想要输入的其他字符。
我开始编码/逃避错误吗?
这就是结果可怕的原因吗?
答案 0 :(得分:0)
这在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实体进行编码。
如果您需要实际编码以便在HTML中安全显示,请参考此线程Encode html entities in javascript。
可在此处找到有关html实体如何工作的其他参考:W3 Schools - HTML Entities和W3 Schools - HTML Symbols