严格来说,编码只能猜,不能严格判断比如 一个字符第一位是156, 第二位是177
那么在gbk里它表示中文 湵
    在shift-jis里表示 愕但是如果光给你 156,177, 不说编码, 你是无法判断它是哪个的,所以只能根据这些编码的范围,大概猜了

解决方案 »

  1.   

    谢谢楼上两位的解答
    To : jiangsheng(蒋晟.Net[MVP]) Encode::Guess 这个好像是perl里面的吧,我只能用PHP实现
    To : helloyou0(你好!) 
    听你这么一说,似乎明白了一点,我试了php扩展库里面的mb_detect_encoding这个函数,但是判断的准确性实在是不尽人意,尤其是在中文和日文的判断上,有没有什么方法可以猜的准确一些?
      

  2.   

    不知道你的csv的文件的来源,如果是任何来源(即用户可以上传任何他制作的csv文件的话)就比较麻烦。 如果你的csv是有一定格式和要求的,比如是你制作的模板,他们只是填入数据,那么你可以在文件里加上标识
    或者
     如果你的网页是分编码的,那来自gbk网页的默认gbk编码,....etc.
    或者
     或者根据$_SERVER里用户语言来判断上面这些方法再结合mb_detect_encoding, 看看效果如何
      

  3.   

    再次谢谢 helloyou0(你好!) 的热心帮助我的CSV是excel模板通过VBA生成的,有固定格式,第一种方法可行我先试试第三种请楼下的继续讨论讨论自己在顶一下
      

  4.   

    没碰到过这种问题,你可以吧所有的编码列到一个数组中,然后通过遍历数组来循环CSV文件的第一行内容就行 。
      

  5.   

    我也遇到了同样的问题  我是用php转EXCEL表 用excel_class的类解决了部分问题 但是遇到个别用户传上来的EXCEL表还是乱码 请问EXCEL表除了UTF-16LE以外还有几种编码啊