0

0

如何解决php中文字符乱码问题

藏色散人

藏色散人

发布时间:2020-07-11 09:11:04

|

3606人浏览过

|

来源于php中文网

原创

php中文字符乱码的解决办法:1、改mysql配置文件“my.ini”或“my.cnf”;2、在需要做数据库操作的php程序前加入语句“mysql_query("set names '编码'");”;3、将服务器编码集设置为“UTF-8”。

如何解决php中文字符乱码问题

PHP中文乱码原因及解决办法分析

PHP网页的编码

1.如果欲使用gb2312编码,那么php要输出头:header("Content-type:text/html;charset=gb2312");,静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为 ANSI,覆盖源文件。

2.如果欲使用utf-8编码,那么php要输出头:header("Content-type:text/html;charset=utf-8");,静态页面添加,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。

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

3.php本身不是 Unicode 的,所有substr之类的函数得改成mb_substr(需要装 mbstring 扩展);或者用 iconv 转码。

PHP与Mysql的数据交互

PHP与数据库的编码应一致

1.修改mysql配置文件my.ini或my.cnf,mysql 最好用 utf-8 编码

[mysql]  
default-character-set=utf8 
[mysqld]  
default-character-set=utf8 
default-storage-engine=MyISAM 
在[mysqld]下加入:  
default-collation=utf8_bin 
init_connect='SET NAMES utf8'

2.在需要做数据库操作的php程序前加mysql_query("set names '编码'");,编码和php编码一致,如果 php编码是 gb2312 那 mysql 编码就是 gb2312,如果是utf-8那 mysql 编码就是 utf8,这样插入或检索数据时就不会出现PHP中文乱码了。

关于编码

1、字符集:

在计算机底层中数据存储的都是二进制数据,要想获取真正有意义的字符,就必须让二进制数据与每一个字符对应起来,这种对应关系就形成了一张编码表。

常用字符集:

ISO-8859-1 拉丁码表 latin,表示西欧语言,使用一个字节即8位表示数据。

GB2312 简体中文码表。包含6000-7000中文和符号。用两个字节表示。两个字节都是开头为1,都为负数。

GBK 目前最常用的中文码表,2万的中文和符号。用两个字节表示数据。

Unicode 国际标准码,无论是什么文字,都用两个字节存储。

UTF-8 基于Unicode,一个字节就可以存储数据,不用两个字节存储,而且这个码表更加的标准化,在每一个字节头加入了编码信息。

(Linux 默认使用的 ISO-8859-1,win32默认使用的GB2312)

Thiings
Thiings

免费的拟物化图标库

下载

2、编码和解码

编码: 将字符转换成在字符集中对应的编码

解码: 在字符集中查找出编码对应的字符

中文在网络中的传输过程

1、以Java为例,eclipse默认使用 UTF-8 编码集,Tomcat 服务器默认使用 ISO-8859-1编码集,浏览器一般默认使用 GBK 编码集。

 程序与服务器之间以字符传输,服务器与浏览器之间以字节传输。

2、中文传输过程:

浏览器中的中文字符----->进行编码----->服务器----->进行解码----->程序;

程序中的中文字符----->服务器----->进行解码----->浏览器----->编码进行显示

3、乱码产生原因以解决方式:

(1)、浏览器中的中文字符以 GBK 进行编码,以字节流传输到服务器,服务器再以 ISO-8859-1进行解码,以字符的形式传输给程序。

因为 ISO-8859-1 编码集不支持中文字符,所有解码后的字符都是西欧字符,把这些字符传输给程序就产生了乱码;

针对这个原因,只要把服务器的编码集设置为 UTF-8 即可:

request.setCharacterEncoding("UTF-8");

但这种方法只能用于POST请求方式,因为设置只会作用于请求体中的内容,如果是GET请求方式,可用先解码再编码的方式:

byte[] buffer = request.getParameter("word").getBytes("ISO-8859-1");  //进行编码
String newStr = new String(buffer,"UTF-8");  //进行解码

(2)、程序中的中文字符原样传输到服务器,服务器要先对中文字符进行编码再传输给浏览器,但因为 ISO-8859-1 编码集不支持中文字符,所以在字符集中查找不到对应的编码,编码后就变成了问号,传输给了浏览器并显示;

针对这种情况,要进行两次设置:

response.setCharacterEncoding("UTF-8");//将服务器编码集设置为UTF-8
response.setContentType("text/html;charset=UTF-8"); //将浏览器编码集设置为UTF-8

实际上第二行设置已经包含了对服务器的设置,所以通常只要写第二句代码即可。

更多相关知识,请访问PHP中文网

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

842

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

739

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

431

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

1

2026.01.22

热门下载

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

精品课程

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

共137课时 | 9.1万人学习

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

共6课时 | 9.5万人学习

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

共13课时 | 0.9万人学习

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

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