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下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
php处理restful请求的路由类分享
Feb 27 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
如何解决php-fpm启动不了问题
Nov 17 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
php的计数器程序
2006/10/09 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
python实现合并两个数组的方法
2015/05/16 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
Python3开发环境搭建详细教程
2020/06/18 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
机电工程学生自荐信范文
2013/12/07 职场文书
先进集体事迹材料
2014/02/17 职场文书
法学院毕业生求职信
2014/06/25 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
值班管理制度范本
2015/08/06 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers