首页 >后端开发 >PHP问题 >php转utf-8中文乱码怎么办

php转utf-8中文乱码怎么办

藏色散人
藏色散人原创
2023-01-29 09:27:143470浏览

php转utf-8中文乱码的解决办法:1、在代码开始处加入“header("Content-Type: text/html;charset=utf-8");”;2、将文件另存为“UTF-8”;3、删除BOM标签即可。

php转utf-8中文乱码怎么办

本教程操作环境:Windows10系统、PHP8.1版、DELL G3电脑

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

4.PHP以附件形式保存文件的时候,UTF-8编码问题: 

PHP以附件形式保存文件,文件名必须是GB2312编码, 

否则,如果文件名中有中文的话,将是显示乱码: 

如果你的PHP本身是UTF-8编码格式的文件, 

需要将文件名变量由UTF-8转成GB2312: 

iconv("UTF-8", "GB2312", "$filename");

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

一般文章标题很长的时候,会显示一部分标题,会对文章标题进行截断, 

由于一个UTF-8编码格式的中文字符会占用3个字符宽度, 

截取标题的时候,有时会只截取到一个中文字符的1个字符或2字符宽度, 

没截取完整,将出现乱码或“?”问号的情况, 

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

function get_brief_str($str, $max_length) 
{ 
echo strlen($str) ."<br>"; 
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; 
}

推荐学习:《PHP视频教程

以上是php转utf-8中文乱码怎么办的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn