猿问

php 如何处理乱码

xiemioc
浏览 1931回答 1
1回答

JustWannaHugU

二.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;  }
随时随地看视频慕课网APP
我要回答