JavaScript 中的 GET 请求中文乱码问题通常是由于编码不一致导致的。以下是关于这个问题的基础概念、原因、解决方案以及相关应用场景的详细解释:
当发送 GET 请求时,浏览器会将参数进行 URL 编码。如果服务器端没有正确解码,或者客户端和服务器端的编码不一致,就会导致中文乱码。
确保在发送请求前对中文参数进行 URL 编码。
const param = encodeURIComponent('中文');
const url = `http://example.com/api?param=${param}`;
fetch(url)
.then(response => response.json())
.then(data => console.log(data));
确保服务器端能够正确解码 URL 参数。
const http = require('http');
const url = require('url');
http.createServer((req, res) => {
const queryObject = url.parse(req.url, true).query;
const decodedParam = decodeURIComponent(queryObject.param);
console.log(decodedParam); // 输出: 中文
res.end();
}).listen(3000);
from flask import Flask, request
app = Flask(__name__)
@app.route('/api')
def api():
param = request.args.get('param')
decoded_param = param.encode('latin1').decode('utf-8')
print(decoded_param) # 输出: 中文
return 'Success'
if __name__ == '__main__':
app.run(port=3000)
通过确保客户端和服务器端使用一致的编码方式,并在必要时进行正确的 URL 编码和解码,可以有效避免 GET 请求中的中文乱码问题。
领取专属 10元无门槛券
手把手带您无忧上云