Re: PHP乱码问题,UTF-8(乱码),很全的说明和解决办法

添加时间:14-10-07 所属分类:PHP工具与代码
  二.PHP页面转UTF-8编码问题
1.在代码开始出加入一行:
[code]header("Content-Type: text/html;charset=utf-8");[/code]

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标签的方法:
a.可以用Dreamweaver打开文件,并重新保存,即可以去除BOM标签!
b.可以用EditPlus打开文件,并在菜单“首选项”->“文件”->”UTF-8标识”,设置为:“总是删除签名”,
然后保存文件,即可以去除BOM标签!

4.PHP以附件形式保存文件的时候,UTF-8编码问题:
PHP以附件形式保存文件,文件名必须是GB2312编码,
否则,如果文件名中有中文的话,将是显示乱码:
如果你的PHP本身是UTF-8编码格式的文件,
需要将文件名变量由UTF-8转成GB2312:
[code]iconv("UTF-8", "GB2312", "$filename");[/code]

5.截断显示文章标题时,出现乱码或者“?”问号的问题:
一般文章标题很长的时候,会显示一部分标题,会对文章标题进行截断,
由于一个UTF-8编码格式的中文字符会占用3个字符宽度,
截取标题的时候,有时会只截取到一个中文字符的1个字符或2字符宽度,
没截取完整,将出现乱码或“?”问号的情况,
用下面的函数截取标题,就不会有问题:

[code]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;
}[/code]
  • 1
  • 2
  • 3
  • 4
  • 5

前篇:PHP处理SQL脚本文件导入到MySQL的代码实例 后篇:php读取某目录下的所有同类型文件
发表我的评论


推荐文章   提醒:办理该商品住宅的交付手续须知   极限运动——狗狗一样能做到   想象力贴图:只有做不到,没有想到不到...   济南四大民间儿科专家:少用抗生素用药很...   济南不少市民爱上“二手生活”
随机文章   php完全过滤HTML,JS,CSS等标签   PHP提取中文字符和数字   php下通过伪造http头破解防盗链的代码   错误syntax error, unexpected T_ENCAP...   php模拟post提交数据,可用来网站的采集...
广告

其他推荐

因为本站所有内容均转载自其它媒体,本意为公众提供免费服务,但并不代表本网赞同其观点,也不能对其真实性验证负责,如稿件版权单位或个人不想在本网发布,请与我联系,本人会立即将其撤除,谢谢.联系方式:atseashawk@163.com QQ:99289555