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代码
Mar 08 PHP
mysql+php分页类(已测)
Mar 31 PHP
php array_search() 函数使用
Apr 13 PHP
php strcmp使用说明
Apr 22 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
PHP面向对象法则
Feb 23 PHP
php中的strpos使用示例
Feb 27 PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
Thinkphp中的curd应用实用要点
Jan 04 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 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
js兼容标准的表格变色效果
2008/06/28 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
python利用拉链法实现字典方法示例
2017/03/25 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
python 实现IP子网计算
2021/02/18 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
通信工程毕业生自荐信
2013/11/01 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
大学生个人自荐信
2014/02/24 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
节水标语大全
2014/06/11 职场文书
党员个人党性分析材料
2014/12/18 职场文书
转让协议书
2015/01/27 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers