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开发框架总结收藏
Apr 24 PHP
Discuz 模板引擎的封装类代码
Jul 18 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
php实现兼容2038年后Unix时间戳转换函数
Mar 18 PHP
php中 $$str 中 &quot;$$&quot; 的详解
Jul 06 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
PHP addslashes()函数讲解
Feb 03 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 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
php 获取mysql数据库信息代码
2009/03/12 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
关于js datetime的那点事
2011/11/15 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
Python实现队列的方法
2015/05/26 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python交互式图形编程实例(一)
2017/11/17 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
python能做哪些生活有趣的事情
2020/09/09 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
大学生演讲稿范文
2014/01/11 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
2014年职称评定工作总结
2014/11/26 职场文书