【问题标题】:How to encode and decode all special characters in javascript or jquery?如何编码和解码javascript或jquery中的所有特殊字符?
【发布时间】:2016-09-17 23:50:14
【问题描述】:

我希望能够使用 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 标签并解码用户想要输入的其他字符。

我是否一开始就对它们进行了错误的编码/转义?

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

【问题讨论】:

  • 它在哪里崩溃?其中许多字符在 html 中是有效的。这听起来像是一个 XY 问题

标签: javascript php jquery html encoding


【解决方案1】:

这在 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 EntitiesW3 Schools - HTML Symbols

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多