我没有调试环境,但我想可以使用utf8_encode() 加utf8_decode()实现中文的编码客解码,来传递中文,这种方法在显示图像的中文时有用到,可以参考一下。

解决方案 »

  1.   

    不一定都是图片,还有可能是附件
    并且上传之后还要显示出链接
    现在的问题是在win下没有问题,但传到linux上就不行了
    比如upload/测试.bmp,在linux的服务器上就不能打开
      

  2.   

    比如用户上传了一个文件,叫做×××.bmp
    我在服务器端接受的时候,将其文件名用urlencode编码成为如下格式:
    1069294662%CE%D2%B0%AE%B1%B1%BC%AB%B9%E2%C4%C7.bmp
    (前面加入了一个时间戳)
    然后我想在浏览器上输入
    http://localhost/upload/1069294662%CE%D2%B0%AE%B1%B1%BC%AB%B9%E2%C4%C7.bmp
    来打开这个图片,则apache返回的结果是:Forbidden
    You don't have permission to access /upload/1069294662ÎÒ°®±±¼«¹âÄÇ.bmp on this server.
    --------------------------------------------------------------------------------
    Apache/2.0.43 Server at localhost Port 80不知道是什么错误
      

  3.   

    检查权限,估计upload目录和文件
    apache没有读权限
      

  4.   

    倒,,,看明白你写的了你把上载的文件给urlencode了呀上载文件的名字不要改,而是在这个链接的地方urlencode
    例如链接到图片$picname = "中文.bmp";
    echo "<a href=\"urlencode($picname)\">$picname</a>";
      

  5.   

    改了还是不行,我在服务器端的upload目录有1069328869中文.bmp的文件
    在显示的时候,按照你说的做,得到的链接就是:
    <a href=../upload/1069328869%D6%D0%CE%C4.bmp target=_blank class=top-zi>中文.bmp</a>
    然后点击这个链接,得到的结果就是如下的显示:Forbidden
    You don't have permission to access /upload/1069328869&Ouml;&ETH;&Icirc;&Auml;.bmp on this server.
    ---------------------------------------------------------------------------
    Apache/2.0.43 Server at localhost Port 80好像%号的编码不能正确的识别
      

  6.   

    补充一点,使用utf8_encode也不行
    代码如下:
    if($row[5])
    {
    echo "<tr class=deepblue-zi height=30><td>";
    $filename = substr($row[5], 20);   //取出文件名(例如:中文.bmp)
    $path = substr($row[5], 0, 20);    //取出路径名(../upload/10位的时间戳)
    $str = utf8_encode($filename);     //对包含中文的文件名编码
    echo "<a href=$path"."$str target=_blank class=top-zi>";
    echo $filename;
    echo "</a>";
    echo "</td></tr>";
    }