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 相关文章推荐
FleaPHP的安全设置方法
Sep 15 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
PHP如何使用Memcached
Apr 05 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
php的命名空间与自动加载实现方法
Aug 25 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
php GeoIP的使用教程
2011/03/09 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
javascript中Object使用详解
2015/01/26 Javascript
Bootstrap表单布局
2016/07/19 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
python脚本监控docker容器
2016/04/27 Python
python中set()函数简介及实例解析
2018/01/09 Python
sklearn+python:线性回归案例
2020/02/24 Python
python怎么调用自己的函数
2020/07/01 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
飞利浦法国官网:Philips法国
2019/07/10 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
学年末自我鉴定
2014/01/21 职场文书
卖房协议书
2014/04/11 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
运动会班级前导词
2015/07/20 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
vue实现Toast组件轻提示
2022/04/10 Vue.js
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers