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 at(@)符号的用法简介
Jul 11 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php中opendir函数用法实例
Nov 15 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
php实现分页显示
Nov 03 PHP
使用PHP如何实现高效安全的ftp服务器(一)
Dec 20 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP实现的简单分页类及用法示例
May 06 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 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图片上传程序
2008/03/27 PHP
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
房地产公司工程部经理岗位职责
2015/04/09 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
好人好事新闻稿
2015/07/17 职场文书
致接力运动员加油稿
2015/07/21 职场文书
大学新生入学感想
2015/08/07 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
python实现简易名片管理系统
2021/04/11 Python
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android