PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 开发技巧 >> 

Web 开发中遇到的UTF-8的问题总结

Web 开发中遇到的UTF-8的问题总结

来源:互联网  作者:  发布时间:2010-02-28
一个网站如果需要国际化,就需要将编码从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标签!

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;
}


延伸阅读:
Header用于页面跳转要注意的几个问题总结
网页UTF8编码开发中空白的问题(bom问题)
Oracle常见问题及解决方案
面试时,如何回答关于“缺点”的问题
面试问题:你为什么希望到我们公司工作?
二招解决php乱码问题
css兼容问题总结及常用技巧
CSS代码解决网页挂马问题
关于php curl获取301或302转向的网址问题
关于PHP编程中session的问题集锦及解决方法


warning: Division by zero in 的问题
Tags: web   开发   utf-8   问题  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号