“逃避”+&引用;使用JS和PHP

“逃避”+&引用;使用JS和PHP,php,javascript,encoding,Php,Javascript,Encoding,我制作了一个应用程序 您编写一些文本,文本将通过ajax保存。在发送请求之前,我用js转义了它。但不知何故,“+”字符将转换为“”空格字符 因此,我尝试在发送“%plus%”之前查找并替换,但收到了错误消息: 未捕获的语法错误:无效的正则表达式:/+/:无需重复 代码: var replace = "%plus%"; while(title.search(sign) != -1) { title.replace("+", replace);

我制作了一个应用程序

您编写一些文本,文本将通过ajax保存。在发送请求之前,我用js转义了它。但不知何故,“+”字符将转换为“”空格字符

因此,我尝试在发送“%plus%”之前查找并替换,但收到了错误消息:

未捕获的语法错误:无效的正则表达式:/+/:无需重复

代码:

var replace = "%plus%";
            while(title.search(sign) != -1) {
               title.replace("+", replace);
            }
也许有人知道更好的解决办法。。。我和utf-8一起工作。。。而像“ä”这样的德语字符,我在从DB而不是Ajax中获取“€”时也有问题。。。还有很多其他的角色

如果我在php中使用rawscape()和在js中使用unescape(),我会得到很好的结果(但仍然存在与€->%u20AC有关的问题)


需要帮助:)

要匹配正则表达式中的
+
,需要对其进行转义,因为
+
本身是一个特殊字符

return theText.replace(/\+/g, "%plus%");
顺便说一句,
+
的正确编码是
%2b
。您可以使用Javascript实现这一点。(不要使用,它已被弃用。)

因此,我尝试在发送“%plus%”之前查找并替换

这是不够的。如果您未能对
+
符号进行URL编码,几乎肯定会忘记对任何内容进行URL编码,并且如果不进行URL编码,除了加号之外,还有许多其他字符会导致失败

创建对参数中的特殊字符进行编码的请求时,需要使用
encodeURIComponent()

var url= 'something?param='+encodeURIComponent(param)+'&other='+encodeURIComponent(other);
否则,任何不适合URL的字符都将导致损坏,包括
+
(如果查询参数中包含空格,则表示空格;对于实数加号,则需要
%2B
)和许多其他标点符号,以及所有非ASCII字符(例如,
应为
%E2%82%AC
,使用UTF-8编码)


在任何情况下都不要使用JavaScript
escape()
unescape()
函数。
这些不是URL编码,而是JavaScript特有的非标准编码,看起来与URL编码类似,但不兼容。尤其是所有非ASCII字符都会被破坏,这就是为什么
无法工作的原因。

编码器组件这是解决我问题的方法!thx。但现在我有问题了ms和德语字符,a在php中必须使用什么函数?我如何在php中正确编码字符串?如果我不编码,我从“a+B=öä?ß”中得到这个a+B=ÃÃÃÃü?Ã你有什么想法吗?@Fincha:我不知道你的意思。也许你应该问一个新问题。