php html页面中文乱码问题的解决办法:1、在前端通过“”设置整个页面的字符编码;2、在php中通过“header("content-type:text/html; charset=xxx");”设置字符即可。
本教程操作环境:Windows10系统、PHP8.1版、DELL G3电脑
php html页面中文乱码问题怎么解决?
前端网页、php与mysql数据库字符编码(解决中文等乱码问题
web开发中经常涉及前端网页——php——mysql之间的数据交互,当数据只有英文时通常不会有什么问题,但一旦涉及中文,三个地方的某一处字符编码不一致(如,网页使用的时gbk而mysql使用utf-8)就有可能导致乱码的出现。
(注:关于字符编码请参见百度百科:http://baike.baidu.com/view/1204863.htm?fr=aladdin)
前端网页编码:
通常我们都认为可以通过<head>标签内的<meta>项(如<META http-equiv="content-type" content="text/html; charset=xxx">)来设置整个页面的字符编码。大部分页面可以采用这种方式来告诉浏览器显示这个页面的时候采用什么编码,但是有的时候我们会发现有了这句还是不行,不管xxx是哪一种,浏览器采用的始终都是一种编码。
这种情况涉及到http协议通信中的头部(header)部分,实际上,用户浏览网页时,服务器发送给用户的内容不仅包括我们的网页(包括html/css/js这些代码内容),还包括被称为头部(header)的描述性内容,这些内容会告知客户端将要接收的数据的类型(是html还是纯文本还是多媒体文件等)、大小、来源等信息(如果想要看一下这些信息,可以使用telnet工具(而不是通过浏览器)按照http协议自己发起get等请求试试)。由于头部是优先于html发送的,<meta>作为html的一部分其优先级也低于头部,如果在头部中已经包含了有关网页字符编码的描述,浏览器最终就会按头部中说明的字符编码集来解析网页。
在php中,可以使用 header("content-type:text/html; charset=xxx"); 来发送关于字符集的头部。
而对于apache服务器来说,它具有一个AddDefaultCharset的功能,也就是会为每个发送的网页按照服务器默认的字符集设定好对应头部。
查看/etc/apache2/httpd.conf(2.4之前)或/etc/apache2/conf-available/charset.conf(2.4及以后),里面有一句AddDefaultCharset xxx如果这一句未处于注释状态,那么为每个网页添加默认字符集头部的功能就处于开启状态,此时单独设置<meta>标签里的字符集便没有效果。
注意:html页面所标明的编码方式应该与实际在编写html页面(其实就是纯文本)时保存所用的编码方式一致。
一般而言,为了兼容中文甚至