如何在PHP和Mysql中对UTF8编码进行转换

  介绍

如何在PHP和Mysql中对UTF8编码进行转换?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> PHP页面转utf - 8编码问题 <强>
1。在代码开始出加入一行:标题(“内容类型:text/html; charset=utf-8");
2。PHP文件编码问题点击编辑器的菜单:“文件”→“另存为”,可以看到当前文件的编码,确保文件编码为:utf - 8,如果是ANSI,需要将编码改成:utf - 8。
3。PHP文件头BOM问题:PHP文件一定不可以有BOM标签,否则,会出现会话不能使用的情况,并有类似的提示:警告:session_start()函数。session-start]:不能发送会话缓存限制器——头已经发送这是因为,在执行session_start()的时候,整个页面不能有输出,但是当由于前PHP页面存在BOM标签,PHP把这个BOM标签当成是输出了,所以就出错了!所以PHP页面一定要删除BOM标签
<强>删除这个BOM标签的方法:
<强> 1。可以用Dreamweaver打开文件,并重新保存,即可以去除BOM标签!
2。可以用文字编辑器打开文件,并在菜单”首选项”→“文件”→“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 ($小姐:=,0;,美元小姐:& lt;, max_length;美元,美元我+ +),{,   ,,,,,if (奥德(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 “测试”,(,   “id”, INT  NOT  NULL ,,   “名字”,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  & # 39; use utf8 # 39;“);//读库,   mysql_query (“set  names  & # 39; use UTF8 # 39;“);//写库

关于如何在PHP和Mysql中对UTF8编码进行转换问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

如何在PHP和Mysql中对UTF8编码进行转换