Fri*_*ons 2 javascript php encoding
我做了一个应用程序,
你写了一些文字,文字将保存在ajax上.在发送请求之前,我用js将其转义.但不知何故,"+"字符将转换为""空格字符......
所以我在发送"%plus%"之前尝试查找和替换,但我收到了错误消息:
未捕获的SyntaxError:无效的正则表达式:/ + /:无需重复
码:
var replace = "%plus%";
while(title.search(sign) != -1) {
title.replace("+", replace);
}
Run Code Online (Sandbox Code Playgroud)
也许有人知道一个更好的解决方案...我使用utf-8 ...和德语字符如"ä"我也有问题"€"从数据库通过Ajax得到...还有很多其他字符....
如果我在php中使用rawescape()并在js中使用unescape(),我会有很好的结果(但仍然存在问题 - >%u20AC
需要帮忙 :)
所以我在发送"%plus%"之前尝试查找并替换
这还不够.如果您没有对+符号进行URL编码,那么您几乎肯定会忘记对任何内容进行URL编码,如果没有URL编码,还有许多其他字符会导致失败,而不仅仅是加号.
您需要encodeURIComponent()在创建请求时使用以对参数内的特殊字符进行编码:
var url= 'something?param='+encodeURIComponent(param)+'&other='+encodeURIComponent(other);
Run Code Online (Sandbox Code Playgroud)
否则,任何不适合URL的字符都会导致损坏,包括+(如果包含在查询参数中的空格;对于您需要的真正加号%2B)和许多其他标点符号,以及所有非符号ASCII字符(例如,€应%E2%82%AC使用UTF-8编码).
在任何情况下都不要使用JavaScript escape()和unescape()函数.这些不是URL编码,而是JavaScript特有的非标准编码,看起来类似于URL编码但不兼容.特别是所有非ASCII字符都被删除,这就是为什么€不起作用的原因.
| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |