php - 用JS和PHP转义 "+"

标签 php javascript encoding

我做了一个应用,

你写一些文本,文本将通过 ajax 保存。在发送请求之前,我用js对其进行了转义。但是不知何故,“+”字符将被转换为“”空格字符......

所以我在发送“%plus%”之前尝试查找和替换,但我收到了这些错误消息:

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

代码:

var replace = "%plus%";
            while(title.search(sign) != -1) {
               title.replace("+", replace);
            }

也许有人知道一个更好的解决方案...我使用 utf-8...和像“ä”这样的德语字符 我在通过 Ajax 从 DB 获取它时也遇到“€”问题...和很多其他 Angular 色....

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

需要帮助:)

最佳答案

So i tryed to find and replace before sending in "%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 字符都会被破坏,这就是 不起作用的原因。

关于php - 用JS和PHP转义 "+",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238045/

相关文章:

javascript - 无法在此代码中获取 this.value

javascript - react .js : attach event from parent to children

excel - 如何在 Excel VBA 中对字符串进行 URL 编码?

php - 显示 Woocommerce 中选定产品变体的特定数据

php - PHP中如何对数组的索引进行排序

php - 为什么 preg_replace with/(.*)/repeat part of string?

javascript - Javascript 文件的相对 URL

设置全局变量时的 PHP 语法错误

python - 解析 Stackoverflow Posts.xml 数据转储文件使程序崩溃,给出 ascii 编码错误

objective-c - 使用Videotoolbox进行H264编解码