原生PHP编码问题解决思路:信源、信道、信宿
网页的编码问题是每个web开发人员都无法避免的问题。纷繁复杂的编码类型总是让页面出现众多让人无语的乱码问题。幸运的是每种编程语言都竭尽全力的去简化编码的解决方法,PHP在这方面也是提供了很多的优化方案,这里就对自己在用原生PHP进行网站开发的时候解决编码问题的方法进行下总结。
其实网站就像是一个信息传输的桥梁,将数据库的数据传输到客户端,在将客户端的数据储存到数据库。所以解决编码问题也应该中这个角度去考虑。即:信源、信道、信宿三个方面。
信源:也就是数据库,这就要求你的数据库、表都必须是用一种支持中文的编码(一般是utf8,这里就用这种编码举例)。这一点很重要,很多开发者在使用PHP时使用的是集成的开发环境,那么MySQL数据库在安装时的默认编码一般会是gbk。所以在新建数据库和新建表的时候都应该注意将编码设置成utf8,以避免和后面的开发产生不必要的冲突。
信道:这里就涉及到程序的问题了。首先一点,请确保你写代码的文件保存的编码格式是utf8。很多的编辑器的默认编码格式都是gbk,所以很多代码看上去是没有编码问题的,但是一旦访问,页面便会出现编码问题
其次便是我们连接数据库的工具了。对于php来说,有两种方式 mysql函数 和mysqli函数。这两种函数库都可以在初始化连接的时候都有charset的选项。但这里设置的其实是连接数据库的编码格式,并不是mysql函数 和 mysqli 获取数据的编码。所以在进行查询前,可以先
query('set charset utf8');
这条sql语句保证了mysql函数和mysqli函数的编码格式,即保证了信道和编码格式。
信宿:这就是HTML前端页面的问题了,保证前端页面的保存格式和解析格式都是utf8就行了。
小结:web开发的过程中经常会碰到的情况是:为什么代码在本机上没有问题,上传到服务器就出现了乱码的问题。这种问题通常就是因为没有考虑到全部的编码情况产生的。本 机上的开发环境会有默认的编码格式,但是服务器上的默认编码可能不同,这也就造成了服务器上的乱码问题。比如有时候mysqli的默认编码格式就是utf8,但在Linus服务器上却不是,这就会产生数据库和页面编码设置都是正确但是出现乱码的问题。
总而言之,一旦出现编码的问题,一定会是代码的问题,千万不要简单的归结为服务器的问题而不去解决。从上面的三个方面去思考解决方案,一定会有解决的方法的。
- 解决php原生连接数据库失败的问题(1)
- php编码的问题及解决办法
- 解决php5+mysql5.1.1+html+javascript之间的编码问题
- php中解决中文json编码模糊查询问题
- android+PHP+mysql开发编码问题解决方案
- 快速解决ThinkPHP 项目中使用原生PHP导致的SQL注入问题
- Apache连接PHP后无法启动问题解决思路
- 【PHP问题大全】--PHP连接MySQL出现乱码的编码解决办法
- Php+MYSQL中文编码问题解决全过程
- Apache连接PHP后无法启动问题解决思路
- PHP显示乱码和apache内部编码问题的解决
- 解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
- 原生java http方式上传大文件(含 文件流分段上传问题、base64分段转码问题解决思路)
- 与php后台的交互(和解决中文编码问题)
- PHP 页面编码声明方法详解(header或meta,解决中文乱码问题)
- PHP 页面编码声明方法详解(header或meta,解决中文乱码问题)
- 菜鸟对Python编码问题解决思路
- [ASP/PHP/JSP]MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- SpringMVC+MySQL出现编码问题解决思路
- 原生java http方式上传大文件(含 文件流分段上传问题、base64分段转码问题解决思路)(转)