js encodeURIComponent 之php解码

在JS中使用了encodeURIComponent对中文进行编码在PHP中使用iconv('UTF-8','gb2312',$q);就可以得到你需要的字串了,其中gb2312根据你实际应用来定如还不明白为什么看下面的文章

URL编码转换,escape() encodeURI() encodeURIComponent()

本文介绍对url编码的三种函数 escape() ,encodeURI() ,encodeURIComponent()


escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )

phperz.com


因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。

注意:escape 方法不能用来对“统一资源标识符”(uri) 进行编码。对其编码应使用 encodeuri 和 encodeuricomponent 方法。另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

### 使用 `encodeURIComponent` 方法 在 JavaScript 中,`encodeURIComponent` 是一种用于对 URI 组件进行编码的方法。它会替换掉那些在 URI 中具有特殊含义或者不被允许的字符,将其转换成适合在网络上传输的形式[^2]。 以下是具体的说明以及示例: #### 编码规则 `encodeURIComponent` 会对字符串中的非法字符进行编码处理,将它们替换成百分号序列(即 `%XX` 形式的十六进制值)。需要注意的是,该方法不仅会对空格等常见非法字符进行编码,还会对一些保留字符(如 `/`, `?`, `&`, `=` 等)也进行编码[^3]。 #### 示例代码 下面是一个简单的例子展示如何使用 `encodeURIComponent` 来编码 URL 参数: ```javascript const url = "https://www.example.com/search"; const params = { query: "JavaScript教程", page: 1, }; // 构建查询字符串并对其进行编码 const queryString = Object.keys(params).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}` ).join('&'); console.log(`${url}?${queryString}`); // 输出结果类似于:https://www.example.com/search?query=JavaScript%E6%95%99%E7%A8%8B&page=1 ``` 在这个例子中,我们构建了一个带有参数的对象,并通过遍历对象键值来创建查询字符串。对于每一个键和对应的值都调用了 `encodeURIComponent` 进行单独编码[^4]。 #### 解码过程 当服务器端接收到经过 `encodeURIComponent` 处理的数据时,在 PHP 或其他服务端语言里可以通过相应的函数来进行解码操作。例如,在 Java 中可以利用如下方式完成解码工作: ```java String decodedData = java.net.URLDecoder.decode(encodedData, "UTF-8"); ``` 这表明无论是在客户端还是服务端之间传递数据的时候,都需要保持一致性的编码/解码逻辑以确保信息能够正确无误地传输[^1]。 #### 注意事项 尽管 `encodeURI` 和 `encodeURIComponent` 都是用来做 URI 编码工作的两个重要工具,但是两者存在区别——前者不会对某些特定的保留字符执行编码动作;后者则更加严格全面地对待所有可能引起歧义的内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值