0

0

php怎么获取带中文的get参数_php接收中文参数乱码解决【方法】

雪夜

雪夜

发布时间:2026-02-22 22:49:03

|

745人浏览过

|

来源于php中文网

原创

根本原因是url编码不一致与服务端未正确解码,需统一utf-8编码、确保php文件为utf-8无bom、响应头声明charset,并优先通过$_server['query_string']手动解析。

php怎么获取带中文的get参数_php接收中文参数乱码解决【方法】

PHP 获取带中文的 GET 参数时乱码,根本原因是 URL 编码不一致 + 服务端未正确解码,不是 PHP 本身的问题,而是浏览器、HTTP 协议和 PHP 配置协同失配的结果。

浏览器发的是 UTF-8 编码的 %E4%B8%AD%E6%96%87,但 $_GET 自动解码后却当 ISO-8859-1 处理

现代浏览器(Chrome/Firefox/Safari)对地址栏中手动输入的中文,会自动用 UTF-8 编码再百分号编码(如 %E4%B8%AD)。但 PHP 的 $_GET 在填充前默认调用 urldecode(),而该函数不指定字符集,底层按字节流处理——如果 PHP 运行环境 locale 或内部编码不是 UTF-8,就容易把多字节序列拆开解读,显示成 或乱码。

  • 检查你是否在 URL 中直接写了中文(如 ?name=张三),这种写法依赖浏览器自动编码,不可靠;应改用 encodeURIComponent('张三') 前端编码
  • 不要依赖 iconv()mb_convert_encoding()$_GET['name'] 二次转码——它很可能已经是损坏过的字符串,越转越错
  • 确认 Web 服务器(Apache/Nginx)没做额外的 URL 重写或解码干预,比如 Apache 的 mod_rewrite 中用了 [B] 标志但后端又重复解码

PHP 文件自身编码必须是 UTF-8 无 BOM,且响应头声明 Content-Type

即使 GET 参数解码正确,如果 PHP 文件保存为 GBK 或带 BOM 的 UTF-8,PHP 解析源码时可能出错;更常见的是输出 HTML 时没声明编码,导致浏览器用错误编码渲染表单或链接中的中文。

剪刀手
剪刀手

全自动AI剪辑神器:日剪千条AI原创视频,零非原创风险,批量高效制作引爆流量!免费体验,轻松上手!

下载
  • 用编辑器(如 VS Code、Notepad++)确认 PHP 文件编码是 UTF-8 without BOM,不是 UTF-8 with BOM
  • 在输出 HTML 前加 header('Content-Type: text/html; charset=utf-8');,或在 HTML 中确保有 <meta charset="utf-8">
  • 避免在 PHP 文件开头有任何空格、UTF-8 BOM 字节或 echo/print 语句,否则 header 会发送失败

最稳的接收方式:绕过 $_GET,用 parse_str() + urldecode() 手动解析原始 QUERY_STRING

当 Nginx 或某些 CGI 环境下 $_GET 行为异常(比如被多次解码),直接读取原始查询字符串并手动处理,能完全掌控解码逻辑。

立即学习PHP免费学习笔记(深入)”;

if (isset($_SERVER['QUERY_STRING'])) {
    $raw_query = $_SERVER['QUERY_STRING'];
    // 先还原原始字节,再用 UTF-8 解释
    parse_str(urldecode($raw_query), $parsed);
    $name = $parsed['name'] ?? '';
}
  • urldecode() 是字节安全的,不会像 $_GET 那样受 php.ini 中 default_charset 影响
  • 此方法不依赖 mbstring 扩展,兼容 PHP 5.4+ 所有环境
  • 注意:如果前端用了 encodeURI()(只编码非 ASCII,不编码 / ? & =),就不能直接 urldecode(),得先 str_replace() 恢复特殊符号再解码

真正麻烦的从来不是“怎么让中文显示出来”,而是「哪一层在什么时候做了什么编码操作」——浏览器、Nginx rewrite、PHP 的 auto_globals_jit、甚至 CDN 的 query string 处理,都可能悄悄改写原始字节。盯住 $_SERVER['QUERY_STRING'] 的原始值,比调试 $_GET 快得多。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

240

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

518

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

567

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

243

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

562

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3606

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

49

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

67

2026.01.13

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1030

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.3万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号