如题

解决方案 »

  1.   

    file_get_contents函数本身不能判断。只能根据内容来判断。
      

  2.   

    mb_detect_encoding返回的不是想要的 utf-9 gbk这些 他好像返回的是一个编号
      

  3.   

    $enc=mb_detect_encoding($result, "gb2312,gbk,utf-8");
    var_dump($enc);
    结果是 string(6) "EUC-CN"
      

  4.   

    EUC-CN是GB 2312最常用的表示方法。浏览器编码表上的“GB2312”,通常都是指“EUC-CN”表示法。不过你用 mb_detect_encoding 是不能得到正确的结果的
    你把这个列表 "gb2312,gbk,utf-8" 里面的编码位置调一调看看
      

  5.   

    我换成  gbk,gb2312,utf-8
    结果是  string(5) "CP936"  也不是想要的结果  我想让他直接告诉我 是  gb2312或utf-8等
      

  6.   

    本帖最后由 xuzuning 于 2012-04-12 16:25:05 编辑
      

  7.   

    file_get_contents只能编程人员来确定。
      

  8.   

    编码决定内容,内容不能决定编码, 
    比如看见一个gbk汉字,也完全可以看成是两个ISO-8859-1字符
    所以mb_detect_encoding只能用猜的,既然是猜,不能完全保证正确(其实也没有绝对的正确)对file_get_contents得到的内容,如果是一个web页面,可以用meta来判断,
    如果没有这样的信息,只能"猜"
      

  9.   

    再有, 你可以用mb_list_encodings得到支持的编码,
    我这里其中根本就没有gbk/gb2312, 只有EUC-CN和CP936
    所以你的参数写gb2312,gbk没有意义
      

  10.   

    +1
    内容 -> 编码 -> 呈现
    内容可以指定不同的编码,然后以不同的呈现方式展现在我们眼前,乱码不乱码的是我们主观的认知,电脑无从得知究竟一长串字节到底以什么编码呈现才算所谓的"正确",所以只能是去猜,猜的结果可能正好猜中你想要的,也有可能是错误的。