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的宝库目录--PEAR
Oct 09 PHP
php 什么是PEAR?
Mar 19 PHP
php 文件上传实例代码
Apr 19 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
php中通过DirectoryIterator删除整个目录的方法
Mar 13 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 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格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
python查询sqlite数据表的方法
2015/05/08 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
python实现键盘控制鼠标移动
2020/11/27 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
python调用摄像头的示例代码
2020/09/28 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
英国行业制服供应商:Alexandra
2019/09/14 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
社区工作者思想汇报
2014/01/13 职场文书
合伙协议书
2014/04/23 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
golang中的空slice案例
2021/04/27 Golang
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL