PHP和Mysql中转UTF8编码问题汇总


Posted in PHP onOctober 10, 2015

一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意,如果没有转换彻底,将会有很多的编码问题出现!
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'");//写库

希望本文所述对大家的PHP+MySQL程序设计有所帮助。

PHP 相关文章推荐
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
php对文件进行hash运算的方法
Apr 03 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
php微信开发之上传临时素材
Jun 24 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 #PHP
PHP内存使用情况如何获取
Oct 10 #PHP
PHP中Session和Cookie是如何操作的
Oct 10 #PHP
PHP中JSON的应用技巧
Oct 10 #PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 #PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 #PHP
php中删除、清空session的方式总结
Oct 09 #PHP
You might like
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python中的日期时间处理详解
2016/11/17 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
Django的CVB实例详解
2020/02/10 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
新郎新娘婚礼答谢词
2014/01/11 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
新年爱情寄语
2014/04/08 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
小学生节水倡议书
2015/04/29 职场文书
小学德育工作总结2015
2015/05/12 职场文书
教育教学工作反思
2016/02/24 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏
关于的python五子棋的算法
2022/05/02 Python