php页面,mysql数据库转utf-8乱码,utf-8编码问题总结


Posted in PHP onAugust 27, 2015

示例一:

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标签!

3.PHP以附件形式保存文件的时候,UTF-8编码问题: PHP以附件形式保存文件,文件名必须是GB2312编码,否则,如果文件名中有中文的话,将是显示乱码: 如果你的PHP本身是UTF-8编码格式的文件,需要将文件名变量由UTF-8转成GB2312: iconv("UTF-8", "GB2312", "$filename");

4.截断显示文章标题时,出现乱码或者“?”问号的问题:

一般文章标题很长的时候,会显示一部分标题,会对文章标题进行截断,由于一个UTF-8编码格式的中文字符会占用3个字符宽度,截取标题的时候,有时会只截取到一个中文字符的1个字符或2字符宽度,没截取完整,将出现乱码或“?”问号的情况,

用下面的函数截取标题,就不会有问题:

function get_brief_str($str, $max_length) { 
  echo strlen($str) . ""; 
  if (strlen($str) > $max_length) { 
    $check_num = 0; 
    for ($i = 0; $i < $max_length; $i++) { 
      if (ord($str[$i]) > 128) 
        $check_num++; 
    } 
    if ($check_num % 3 == 0) 
      $str = substr($str, 0, $max_length) . "..."; 
    else 
      if ($check_num % 3 == 1) 
        $str = substr($str, 0, $max_length +2) . "..."; 
      else 
        if ($check_num % 3 == 2) 
          $str = substr($str, 0, $max_length +1) . "..."; 
  } 
  return $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数据库了。

示例二:

php+mysql的utf-8中文乱码问题的解决方法

问题汇总:

1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.

2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.

5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.

6.PHP页面字符集不正确.

7.PHP连接MYSQL数据库语句指定的编码不正确.

使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了.

针对不同问题的解决方法:

1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.

修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:

Alter DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是将test数据库的编码设为utf8.

2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

修改表的编码:

Alter TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是将一个表category的编码改为utf8.

3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

修改字段的编码:

Alter TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

以上命令就是将test表中 dd的字段编码改为utf8.

4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.

如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.

5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.

这种情况也是修改页面charset即可.

6.PHP页面字符集不正确.

为了避免PHP页面乱码的发生,PHP页面开始第一句

header("content-type:text/html; charset=utf-8");

//强行指定页面的编码,以避免乱码

7.PHP连接MYSQL数据库语句指定的编码不正确.

在连接数据库的语句中.

mysql_connect('localhost','user','password');
mysql_select_db('my_db');
mysql_query("set names 'utf8'"); //select 数据库之后加多这一句

以上内容就是本文给大家介绍php页面,mysql数据库转utf-8乱码,utf-8编码问题总结,希望大家喜欢。

PHP 相关文章推荐
十天学会php之第八天
Oct 09 PHP
文章推荐系统(二)
Oct 09 PHP
PHP的ASP防火墙
Oct 09 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
PHP 超级全局变量相关总结
Jun 30 PHP
PHP生成随机密码方法汇总
Aug 27 #PHP
windows下apache搭建php开发环境
Aug 27 #PHP
php给图片添加文字水印方法汇总
Aug 27 #PHP
微信公众平台开发之配置与请求
Aug 26 #PHP
php基础教程
Aug 26 #PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 #PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 #PHP
You might like
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
Three.js实现简单3D房间布局
2018/12/30 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
python动态加载包的方法小结
2016/04/18 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
python TCP包注入方式
2020/05/05 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
Python读写压缩文件的方法
2020/07/30 Python
python用Configobj模块读取配置文件
2020/09/26 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
测绘工程系学生的自我评价
2013/11/30 职场文书
行政专员工作职责
2013/12/22 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
2014年文秘工作总结
2014/11/25 职场文书
入党介绍人意见2015
2015/06/01 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
倡议书怎么写?
2019/04/11 职场文书