127) { $tthis=substr($gb,0,2); $gb=substr($gb,2,strlen($gb)-2); $utf8.=$this->u2utf8(hexdec($codetable[hexdec(bin2hex($tthis))-0x8080])); } else { $tthis=substr($gb,0,1); $gb=substr($gb,1,strlen($gb)-1); $utf8.=$this->u2utf8($tthis); } } return $utf8; } function u2utf8($c) { $str=""; if ($c >6); $str.=chr(0x80 | $c & 0x3F); } else if ($c >12); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } else if ($c >18); $str.=chr(0x80|$c>>12&0x3F); $str.=chr(0x80|$c>>6&0x3F); $str.=chr(0x80|$c&0x3F); } return$str; }[/code], - 三思随然 - 主动即自由,阅历即财富!简简单单,一切随然!" /> PHP中指定GB2312编码文字转换成UTF-8编码的类方法 - 三思随然

PHP中指定GB2312编码文字转换成UTF-8编码的类方法


PHP程序中“指定文字转换成UTF-8”及“指定文字转换成GB2312格式”的方法,附代码如下:

  /**
   * gb2utf8 指定的文字转换为UTF-8格式,包括中英文混合
   * $gb 传过来的GB字符,下面的方法类似
   */
  function gb2utf8($gb) {
    if(!trim($gb))
    return $gb;
    $filename="./gb2312.txt";
    $tmp=file($filename);
    $codetable=array();
    while(list($key,$value)=each($tmp))
      $codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
      $utf8="";
    while($gb) {
      if (ord(substr($gb,0,1))>127) {
        $tthis=substr($gb,0,2);
        $gb=substr($gb,2,strlen($gb)-2);
        $utf8.=$this->u2utf8(hexdec($codetable[hexdec(bin2hex($tthis))-0x8080]));
      }  else {
        $tthis=substr($gb,0,1);
        $gb=substr($gb,1,strlen($gb)-1);
        $utf8.=$this->u2utf8($tthis);
      }
    }
  
    return $utf8;
  }

  function u2utf8($c) {
    $str="";
    if ($c < 0x80) {
      $str.=$c;
    } else if ($c < 0x800) {
      $str.=chr(0xC0 | $c>>6);
      $str.=chr(0x80 | $c & 0x3F);
    } else if ($c < 0x10000) {
      $str.=chr(0xE0 | $c>>12);
      $str.=chr(0x80 | $c>>6 & 0x3F);
      $str.=chr(0x80 | $c & 0x3F);
    }
    else if ($c < 0x200000) {
      $str.=chr(0xF0|$c>>18);
      $str.=chr(0x80|$c>>12&0x3F);
      $str.=chr(0x80|$c>>6&0x3F);
      $str.=chr(0x80|$c&0x3F);
    }
    return$str;
  }


[本日志由 随然 于 2009-06-03 09:21 AM 编辑]
上一篇: 指定一段GB2312编码中文汉字转换成UTF-8编码的ASP函数代码
下一篇: asp写的汉字转换utf-8及utf-8转gb2312的代码
文章来自: 网络
引用通告: 查看所有引用 | 我要引用此文章
Tags: PHP 代码 编码
相关日志:
评论: 1 | 引用: 0 | 查看次数: 12308
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1 字 | UBB代码 关闭 | [img]标签 关闭