url传值中文字符串
今天,我在自己的网页搜索框尝试搜索中文字符串的时候,发现返回值是乱码,英文和数字是正常的。
我记得这种情况我之前遇到过,后续我也修改代码了并且解决了,因为我是使用url传值的,中文会被浏览器编码客户端不用动在php接受数据时转码回来就可以了。
但是,今天发现又出问题了,可能是更换服务器环境了,一些地方又出错了,那就再修改下吧,既然中文会被编码,我想了想,索性自己直接把搜索框内的编码成16进制字符串,然后php再把16进制解码回来,通过一番设置,终于成功了。
代码分享如下:
//js部分,发送请求前处理数据 const en16 = str => { const encoder = new TextEncoder(), bytes = encoder.encode(str); //转为utf-8编码 return Array.from(bytes, byte => byte.toString(16).padStart(2, '0')).join(''); //转为16进制 } //php部分,接受数据后处理数据 $str=hex2bin($str); //解码16进制