JavaScript 中 URL 传递中文参数出现乱码的问题通常是由于编码和解码不一致导致的。URL 中只能包含 ASCII 字符集中的字符,对于非 ASCII 字符(如中文),需要进行编码处理。
在将中文字符拼接到 URL 中之前,使用 encodeURIComponent
函数对其进行编码。
let chineseText = "你好";
let encodedText = encodeURIComponent(chineseText);
let url = "http://example.com/search?q=" + encodedText;
在服务器端接收到 URL 参数后,使用相应的解码函数进行解码。
const http = require('http');
http.createServer((req, res) => {
let query = new URL(req.url, `http://${req.headers.host}`).searchParams;
let decodedQuery = decodeURIComponent(query.get('q'));
console.log(decodedQuery); // 输出: 你好
res.end();
}).listen(8080);
$query = $_GET['q'];
$decodedQuery = urldecode($query);
echo $decodedQuery; // 输出: 你好
确保前端使用的编码方式与后端解码方式一致,通常推荐使用 UTF-8 编码。
encodeURIComponent
对中文字符进行编码。通过以上步骤可以有效解决 JavaScript URL 传递中文参数时的乱码问题。