AJAX GET请求异常:调用PHP脚本返回乱码问号求助
解决AJAX调用PHP返回问号的问题
这种乱码/问号问题我之前踩过坑,大概率是编码不匹配导致的,给你几个具体的排查和解决步骤:
强制PHP输出编码
你的PHP脚本只做了echo,但没有指定输出内容的编码,服务器可能用了默认的非UTF-8编码,和前端页面编码冲突就会出现乱码。修改你的PHP代码,加上编码声明:<?php header('Content-Type: text/html; charset=utf-8'); echo "TEST"; ?>统一前端页面编码
确保你的HTML页面头部明确声明UTF-8编码,避免前端解析时出现编码偏差:<meta charset="UTF-8">同时可以在AJAX请求里明确指定接收数据的类型和编码,让jQuery更准确地解析返回内容:
$.ajax({ url: "test.php", type: "GET", contentType: "application/x-www-form-urlencoded; charset=utf-8", dataType: 'text', success: function(data) { console.log(data); }, error: function (xml, error) { console.log(error); } });检查服务器默认编码
如果上面两步还没解决,可能是服务器的默认编码设置问题:- 若是Apache服务器,可以在项目根目录的
.htaccess文件中添加:AddDefaultCharset UTF-8 - 若是Nginx服务器,在站点配置里添加:
charset utf-8;
- 若是Apache服务器,可以在项目根目录的
一般来说,前两步就能解决这个问号问题,核心就是保证前端页面、PHP输出、服务器返回的编码统一为UTF-8(无BOM)。
内容的提问来源于stack exchange,提问作者foo.doo
相关产品推荐
相关产品推荐

