当前位置:中国站长下载文章中心网页编程PHP编程 → 用php实现gb2312和unicode间的编码转换(2)

用php实现gb2312和unicode间的编码转换(2)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 10:18:22
     下面是一个显示所有全角半角的字体的查看例子
  
  <style>
  BODY {
   FONT-SIZE: 9pt; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px;
  }
  input {
   FONT-SIZE: 9pt; height: 13pt;
  }
  </style>
  <script>
  function showUni(min,max){
   show.document.open();
   show.document.writeln("<style>body{font-size:9pt;word-break:break-all;}</style>");
   show.document.writeln(min + " - " + max + "<br><br>");
   var i=0;
   for(i=min;i<=max;i++){
   show.document.write("&#" + i + ";");
   }
   show.document.close();
  }
  </script>
  <input type=button value="半角" onclick=showUni(32,126)>
  <input type=button value="全角" onclick=showUni(65281,65374)>
  <input type=button value="中文1" onclick=showUni(19968,40869)>
  <input type=button value="中文2" onclick=showUni(63744,64045)>
  <input type=button value="日文平" onclick=showUni(12353,12435)>
  <input type=button value="日文片" onclick=showUni(12449,12534)>
  <input type=button value="韩文" onclick=showUni(44032,55203)>
  <br>自定义:<input name=min> - <input name=max>
  <input type=button value="察看" onclick=showUni(parseInt(document.all.min.value),parseInt(document.all.max.value))>
  <br>
  <iframe src="about:blank" id=show width=100% height=70% scroll=no></iframe>
  
  
  下面是一个查表(gb2312),转换gb2312到utf8的例子, 现在有iconv函数,这个已经没有太大的意义了,
  
  <?
  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) {
   $this=substr($gb,0,2);
   $gb=substr($gb,2,strlen($gb)-2);
   $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080]));
   }else{
   $this=substr($gb,0,1);
   $gb=substr($gb,1,strlen($gb)-1);
   $utf8.=u2utf8($this);
   }
   }
   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;
  }
  
  ?>
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。