PHP Programer  - 讨论区

标题:utf-8编码 和php session之间的矛盾

2011年04月10日 星期日 14:31

我将我的php工程带入LINUX了。出现如下问题:

首先,session自身在Linux下就有问题。要求php文件在显示任何输出文字前就执行session_start函数。不然,会有警告。

如今,我又遇到了第二个问题。就是标题上的问题。要说明的是:这些问题在WAMP上是不存在的。进入session后(也就是登录了),写在php页面里的文字都变成了"?????",而从数据库送出的文字则正常显示。经google发现,网页文件应该使用utf-8 no BOM编码,而不能用普通的utf-8。BOM是问题之源。

但是Linux下,究竟有没有支持utf-8 no BOM编码的文本编辑器呢?

2011年04月10日 星期日 16:13

当然,找到了把utf-8修改成utf-8 no BOM的php代码:

<?
$pathname = $argv[1];//"www/head.php"; // change the pathname to your target file(s) which you want to remove the BOM.
$file_handler = fopen($pathname, "r");
$contents = fread($file_handler, filesize($pathname));
fclose($file_handler);
for ($i = 0; $i < 3; $i++){
    $bytes[$i] = ord(substr($contents, $i, 1));
}
if ($bytes[0] == 0xef && $bytes[1] == 0xbb && $bytes[2] == 0xbf){
    $file_handler = fopen($pathname, "w");
    fwrite($file_handler, substr($contents, 3));
    fclose($file_handler);
    printf("%s BOM removed.<br/>\n", $pathname);
}
?>

可是,总不能每次都用这个修改吧?

2011年04月10日 星期日 16:16

刚刚试过,该一次就可以了。

2011年04月10日 星期日 19:23

我也碰到过这类问题,改成no bom就没问题了。

不过我是直接改的PHP文件属性

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号