php和mysql中uft-8中文编码乱码的几种解决办法


Posted in PHP onApril 19, 2012

PHP页面转UTF-8编码问题
1.在代码开始出加入一行:

header("Content-Type: text/html;charset=utf-8");

2.PHP文件编码问题
点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,
如果是ANSI,需要将编码改成:UTF-8。
3.PHP文件头BOM问题:
PHP文件一定不可以有BOM标签
否则,会出现session不能使用的情况,并有类似的提示:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
这是因为,在执行session_start() 的时候,整个页面不能有输出,但是当由于前PHP页面存在BOM标签,
PHP把这个BOM标签当成是输出了,所以就出错了!
所以PHP页面一定要删除BOM标签
删除这个BOM标签的方法:
1.可以用Dreamweaver打开文件,并重新保存,即可以去除BOM标签!
2.可以用EditPlus打开文件,并在菜单“首选项”->“文件”->"UTF-8标识",设置为:“总是删除签名”,
然后保存文件,即可以去除BOM标签!
4.PHP以附件形式保存文件的时候,UTF-8编码问题:
PHP以附件形式保存文件,文件名必须是GB2312编码,
否则,如果文件名中有中文的话,将是显示乱码:
如果你的PHP本身是UTF-8编码格式的文件,
需要将文件名变量由UTF-8转成GB2312:
iconv("UTF-8", "GB2312", "$filename");
利用程序来实例字符截取方法
function utf8_substr($str,$len) 
{ 
for($i=0;$i<$len;$i++) 

{ 


$temp_str=substr($str,0,1); 


if(ord($temp_str) > 127){ 



$i++; 


if($i<$len){ 



$new_str[]=substr($str,0,3); 



$str=substr($str,3); 



} 


}else { 


$new_str[]=substr($str,0,1); 


$str=substr($str,1); 


} 

} 

return join($new_str); 
}

MYSQL数据库使用UTF-8编码的问题

1.用phpmyadmin创建数据库和数据表
创建数据库的时候,请将“整理”设置为:“utf8_general_ci”
或执行语句:

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创建数据表的时候:如果是该字段是存放中文的话,则需要将“整理”设置为:“utf8_general_ci”,
如果该字段是存放英文或数字的话,默认就可以了。
相应的SQL语句,例如:
CREATE TABLE `test` ( 
`id` INT NOT NULL , 
`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 
PRIMARY KEY ( `id` ) 
) ENGINE = MYISAM ;

2.用PHP读写数据库
在连接数据库之后:
$connection = mysql_connect($host_name, $host_user, $host_pass);

加入两行:
mysql_query("set character set 'utf8'");//读库 
mysql_query("set names 'utf8'");//写库

就可以正常的读写MYSQL数据库了。

用的appserv-win32-2.5.10做的环境,装这个包的时候用默认的utf8编码。
在写数据库连接文件时,写成:

$conn = mysql_connect("$host","$user","$password"); 
mysql_query("SET NAMES 'UTF8'"); 
mysql_select_db("$database",$conn);

然后在做页面时,注意这句:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这样不管输入数据库的中文,还是页面显示,就都正常了。
在DW CS4版里,默认生成的也是utf8页面。
同样的,如果一开始写数据库连接文件时写成:
mysql_query("SET NAMES 'GBK'");

那页面也要相应变成:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

总结,最后主要是页面编码要统一就可以很方便的解决乱码问题,特别是在mysql_query()这个set names的设置必须和页面及数据库编码统计一就可以了。
PHP 相关文章推荐
PHP strtr() 函数使用说明
Nov 21 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
Yii操作数据库的3种方法
Mar 11 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
Aug 16 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
PHP模块化安装教程
Jun 01 PHP
php递归创建和删除文件夹的代码小结
Apr 13 #PHP
redis 队列操作的例子(php)
Apr 12 #PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 #PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 #PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 #PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 #PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 #PHP
You might like
把PHP安装为Apache DSO
2006/10/09 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
angularJS开发注意事项
2018/05/26 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
Python 流程控制实例代码
2009/09/25 Python
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
python随机数分布random测试
2018/08/27 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
文职个人求职信范文
2013/09/23 职场文书
公司委托书范本
2014/04/04 职场文书
三方合作协议书范本
2014/04/18 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
MySQL数据库之存储过程 procedure
2022/06/16 MySQL