两个人开发同一个系统,一个人用linux,utf-8编码的,另外一个人用windows,gbk编码,在某个地方要处理上传文件,将文件保存在某个目录下。在linux下需要将文件名转为utf8编码,在windows需要将文件名转为gbk编码。问题是,如何利用php自动探测所运行系统的字符集呢?谢谢。

解决方案 »

  1.   

    话说php探测一下系统字符集就这么难?
      

  2.   

    php只能探测系统,不能探测系统字符集。你这个问题都是这么解决:给文件用一个算法取个名字,把真正的名字存到数据库里面。下载的时候调用数据库的数据。这样有个好处,就是以后可以根据需要修改功能。
      

  3.   

    嗯,这个"系统的字符集"好像不像你想的那样....比如linux,实际上文件名是无编码的(ansi),那么你看到的是utf8,可能只是你用的shell里设成了utf8,
    shell里是可以改成其他比如gbk等的,那么php当然也就无法测出哪个来...(或者说,不用测,都是ansi)还有,不是太明白你这两人为什么要转换编码...上传不是都是传到服务端吗,就是说两人各用各的服务器? 
    那么产品最终面向的是什么服务器? 一方面,实际上你可能根本不需要什么转换. 另一方面,无论你是否转换,中文的文件名都会给你一定的麻烦,尤其如gbk编码的.....在包含一些特殊字符的时候....
      

  4.   

    如果不是ftp,直接用真实的文件名称存储就有问题。改改程序吧。这样肯定不行。