LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1355|回复: 5

一个php问题不解:(

[复制链接]
发表于 2005-11-11 09:42:02 | 显示全部楼层 |阅读模式
我写了如下一个php程序:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>量子光学课件</TITLE>
  <meta name="GENERATOR" content="Quanta Plus">
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>
<BODY>
<?php
include ("readme.html");
$handle=opendir('.');

while ($file = readdir($handle)) {
    if ($file!= "readme.html" && $file!="index.php" && $file!="." && $file!="..")        
            {
                echo "<a href=".$file.">".$file."</a><br>";
        }
}
closedir($handle);
?>
</BODY>
</HTML>

目的是想列出当前目录下的文件,并做成链接的形式。运行也没有错,很正常。。。
问题就出在当目录下存在的中文文件名时,程序所给出的链接在win的ie下不能打开。说不存在该地址 我猜想应该是编码的问题,但是应该如何改呢?
发表于 2005-11-11 15:13:14 | 显示全部楼层
base64_encode($filename)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-11 16:27:36 | 显示全部楼层
谢谢parset 大哥 :)
还有一点不太明白的是,为什么没有使用base64_encode的情况下,为什么ie不行,而kde下的konqueror可以正常打开呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-11 16:43:11 | 显示全部楼层
我将
echo "<a href=".$file.">".$file."</a><br>"
改成了
echo "<a href=".base64_encode($file).">".$file."</a><br>";
结果还是不行呀 :(
回复 支持 反对

使用道具 举报

发表于 2005-11-12 17:16:23 | 显示全部楼层
base64_encode肯定不行,因为web服务器会寻找不到文件~~~

urlencode

echo "<a href=".urlencode($file).">".$file."</a><br>";
这样对中文编码即可~~

IE在解析中文的时候本应该将中文进行编码,比如空格%20这样~~但是似乎如果服务器是apache或者非iis,就会有问题~~
回复 支持 反对

使用道具 举报

发表于 2005-11-19 21:03:54 | 显示全部楼层
不好意思,搞错了
如果浏览器设置为utf8发送信息的话,那就可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表