本文目录一览:
- 1、php和javascript中文编码不一样
- 2、encodeURIComponent()加密地址后提交到php怎么处理?
- 3、js的encodeuricomponent 的php解码到底是用urldecode还是iconv()
- 4、浏览器的js控制台encodeuri 不能编码!(叹号)
- 5、对url中的参数进行转码
php和javascript中文编码不一样
你的PHP页面编码用的是GB2312,而js的encodeURIComponent按utf-8转码(不论页面编码是什么)
解决方法:
PHP端echo urlencode(iconv('gbk','utf-8','中文'));
或者将文件编码转成utf-8
js还是用encodeURIComponent
encodeURIComponent()加密地址后提交到php怎么处理?
虽然我不知道encodeURLComponent()这个函数,但应该要转码吧,url中除了字母-_之外的字符浏览器会自动转码的,而且这个是有规律的,不叫乱码,
php有个urldecode()函数转码;
js的encodeuricomponent 的php解码到底是用urldecode还是iconv()
JS:document.write(encodeURIComponent(""))
输出:http%3A%2F%2F
PHP:echo urlencode("");
输出:http%3A%2F%2F
浏览器的js控制台encodeuri 不能编码!(叹号)
原因很简单, 在HTTP请求中只要跟了""在PHP里就会被认作是一个参数. 比如你这个问题的百度URL ;push=coreoldq=1 按照你test1.php?url='+content的写法, 传进PHP的实际上是3个参数: print_r($_GET): Array ( [url] = [push] = core [oldq] = 1 ) 最简单的解决办法是在Javascript中先用encodeURIComponent把URL编码: var content = encodeURIComponent(oConBox.value); 再传进PHP就可以了.
对url中的参数进行转码
url参数进行转码的方式:
1.encodeURI()
2.encodeURIComponent()
3.Base64.encode
示例1:
var url = " 仪表盘ss=dashvv=星星"
encodeURI(url)
--
示例2:
var url = " 仪表盘ss=dashvv=星星"
encodeURIComponent(url)
--
示例3:
是只对参数进行转码,使用split对url进行拆分
var url = " 仪表盘ss=dashvv=星星"
var newSearch = url.split('?')[1].split('').map(item = {
const params = item.split('=');
return ${params[0]}=${encodeURIComponent(params[1])}
}).join('');
url = ${url.split('?')[0]}?${newSearch} ;
console.log(url)
注意:如果转码过后的url需要打开一个新的页面,chrome上会对转码的url进行解码,这样会达不到相应的转码效果。
可以使用Base64.encode替换encodeURIComponent
var url = " 仪表盘ss=dashvv=星星"
var newSearch = url.split('?')[1].split('').map(item = {
const params = item.split('=');
return ${params[0]}=${Base64.encode(params[1])}
}).join('');
url = ${url.split('?')[0]}?${newSearch} ;
console.log(url)
类似这样的效果: ;sss=ZGFzaGJvYXJkLWFsbDE1NTU2NjQyMjE5MDk=
如果是直接获取网上的url可以
const newSearch = location.search.substring(1).split('').map(item = {
const params = item.split('=');
return ${params[0]}=${encodeURIComponent(params[1])} }).join('');
${location.href.split('?')[0]}?${newSearch} ;