zoukankan      html  css  js  c++  java
  • PHP转换UTF-8和GB2312的URL编码(转)

    目前WEB的应用中, UTF-8编码和GB2312编码是并存在的,例如百度(baidu.com)和谷歌(google.com)的URL编码分别是GB2312编码和UTF-8编码。由于编码并存引起的乱码问题给WEB应用开发中带来不少麻烦,因此统一编码是在WEB开发中解决这个问题的主要途径。现在的问题是我们同时得处理UTF-8编码和GB2312,例如我们要统计一个网站由搜索引擎中带来的访问的关键词。

    比如我们搜“中文”这个词,然后观察浏览器地址栏。
    用Baidu得到的结果是:
    http://www.baidu.com/s?wd=%D6%D0%CE%C4

    用Google得到的结果是:
    http://www.google.cn/search?hl=zh-CN&source=hp&q=%E4%B8%AD%E6%96%87&aq=f&oq=

    红色的字符为“中文”这个词的URL编码,即,baidu_urlencode(”中文”)=%D6%D0%CE%C4 , google_urlencode(”中文”)=%E4%B8%AD%E6%96%87 ,由于编码不同,很明显不一样。

    在PHP中有一个mb_convert_encoding的函数,给不同编码的转换带来了方便,源代码如下(示例PHP源代码文档用UTF-8的编码存档):

    header('Content-type: text/html; charset=utf-8');
    echo '<br />百度关键词URL编码转换示例:<br />';
    $urlBaidu = 'http://www.baidu.com/s?wd=%D6%D0%CE%C4';
    $arrParse = parse_url($urlBaidu);
    parse_str($arrParse ['query'],$output);
    echo '乱码:' . $output['wd'] . '<br />';
    //将gb2312编码转换成utf-8编码
    
    $strUTF8 = mb_convert_encoding($output['wd'], 'utf-8', 'gb2312');
    echo '可读码:' . $strUTF8 . '<br />';
    echo '<br />谷歌关键词URL编码转换示例:<br />';
    $urlGoogle = 'http://www.google.cn/search?hl=zh-CN&source=hp&q=%E4%B8%AD%E6%96%87&aq=f&oq=';
    $arrParse = parse_url($urlGoogle);
    parse_str($arrParse ['query'],$output);
    //谷歌关键词URL编码是utf-8,不用再作转换
    echo '可读码:' . $output['q'] . '<br />';

    转自 http://www.open-open.com/home/space-926-do-blog-id-5579.html

  • 相关阅读:
    后缀数组模板
    UVALive
    蓝桥杯 拿糖果
    蓝桥杯 矩阵乘法(区间DP)
    51nod 矩阵乘法
    13.boost有向无向图邻接表表示
    12.boost有向图无向图(矩阵法)
    11.使用boostregex遭遇无法打开libboost_regex-vc120-mt-sgd-1_62.lib的问题
    10.ref regex unordered_set smartpoint
    9.variant move function change_cast
  • 原文地址:https://www.cnblogs.com/ggjucheng/p/3348609.html
Copyright © 2011-2022 走看看