我的php页面是utf8编码,从gb2312网页上截取<title>中的内容时返回的都是乱码,请问有什么解决方法吗.另外右能够测出文字是什么编码的函数吗,mb_detect_encoding返回的都是utf8

解决方案 »

  1.   

    string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
    或者iconv() 
      

  2.   

    转换就用楼上的办法。判断编码你获取的都是网页吧,像浏览器都是用这种方式判断:<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 获取 meta 标签,然后检测后面的 charset 后面的就是网页编码了,当然这个编码一般情况下都是对的,不对的话就是有些做网站的编码写错了(一般不会,因为编码写错了,浏览器打开那么网页也就因为编码识别不对而乱码了,没有网站编写者那么傻)
      

  3.   

    手册中说得很明白了
    string mb_detect_encoding ( string str [, mixed encoding_list [, bool strict]] )If encoding_list is omitted, detect_order is used. 
    如果缺省 encoding_list 则按 mb_ detect_order 给出的检测顺序进行检测
    而默认的  mb_detect_order 是
    Array
    (
        [0] => ASCII
        [1] => UTF-8
    )
    所以他不可能检测到 gb2312你至少需要
    $charset = mb_detect_encoding($string, array('ASCII', 'UTF-8', 'GBK'));
    来取得串的语言编码
      

  4.   

    恩,先判断charset是个好办法.另外想问一下,国内网页编码除了gb2312,uft8,还有其他的吗.还有这个mb_convert_encoding和iconv效率差别大吗
      

  5.   

    说到这个PHP手册,能给我推荐一个好点的吗,我下载的都不太全.我想要那种chm格式的,中文多点的比较好.这个W3C网站有离线参考手册吗
      

  6.   

    没有特别好的办法,就从charset入手吧。
    即使是GBK的,用mb检测,也会返回UTF-8的。
      

  7.   

    再问一个很弱的问题,这个charset应该不算meta的属性吧?这到底是个什么东西呀,怎么提出来检测呀
      

  8.   

    get_headers -- 取得服务器响应一个 HTTP 请求所发送的所有标头
    get_meta_tags --  从一个文件中提取所有的 meta 标签 content 属性,返回一个数组能不能取到就两说了,我就不喜欢写语言声明********$string = '这是中文';
    echo $charset = mb_detect_encoding($string, array('ASCII', 'UTF-8', 'GBK'));
    //强制转换为 utf-8
    $string = mb_convert_encoding($string, 'utf-8', $charset);
    echo $charset = mb_detect_encoding($string, array('ASCII', 'UTF-8', 'GBK'));
    //强制转换为 gbk
    $string = mb_convert_encoding($string, 'gbk', $charset);
    echo $charset = mb_detect_encoding($string, array('ASCII', 'UTF-8', 'GBK'));********mb_convert_encoding和iconv效率差别大吗
    差不多吧?
    一般我喜欢用 iconv 函数组,但 iconv 函数组中没有编码识别的成员
      

  9.   

    很感谢,能帮我看一下这个问题吗http://topic.csdn.net/u/20110606/20/8e265f60-279d-4bf8-8fea-ed757a7a6bb9.html