时光绘梦集
0
位置:JS正文

散人玩家 2025/05/12 周1

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进制