请参考本隐士的站点http://www.wuguan.com,看看里面有没有你要的功能

解决方案 »

  1.   

    <? 
    ////////////////////////////////////////////
    //作者:                    网络骑士       //
    //联系方式:[email protected] //
    //所用技术:php                           //
    //完成时间:2002-05-12                    //
    ///////////////////////////////////////////
    function isbig5($code) 

    if (strlen($code)>=2) 

    $code=strtok($code,""); if (ord($code[0]) < 161) 

    return (0); 

    else 

    if (((ord($code[1]) >= 64)&&(ord($code[1]) <= 126))||((ord($code[1]) >= 161)&&(ord($code[1]) <= 254))) 

    return (1); 

    else 

    return (0); 



    else 

    return (0); 

    } function big5offset($code) 

    if (strlen($code) >= 2) 

    $code=strtok($code,""); 
    if ((ord($code[1]) >= 64)&&(ord($code[1]) <= 126)) 

    return ((ord($code[0]) - 161) * 157 + (ord($code[1]) - 64)); 

    if ((ord($code[1]) >= 161)&&(ord($code[1]) <= 254)) 

    return ((ord($code[0]) - 161) * 157 + 63 + (ord($code[1]) - 161)); 


    return (-1); 
    } function wordtostring($code) 

    return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2)))); 
    } function big5togb($code) 

    include "data_big5.php"; 
    $output=""; 
    $length=strlen($code); 
    $code=strtok($code,""); 
    $idx=0; 
    while ($idx < $length) 

    $tmpStr=$code[$idx].$code[$idx+1]; if (isbig5($tmpStr)) 

    $offset=big5offset($tmpStr); 
    if (($offset >= 0)||($offset <= 14757)) 

    $output.=wordtostring($big5order[$offset]); 
    $idx++; 

    else 

    $output.= $code[$idx]; 


    else 

    $output.= $code[$idx]; 

    $idx++; 

    return ($output); 

    ?> 我们学校的网站和香港的一个交换数据库,遇到了类似的问题,上面是我写的一个函数。写的时候是参考了函数手册完成的,function big5togb($code) 是主函数。
    浅妄薄见,望与斟酌
      

  2.   

    这个程序的原理是什么?能解释一下吗?另外有个php的程序可以实现gb big5互换,不知对这个有没有用。
    需要我贴出来。
      

  3.   

    to _Shakespeare(网络骑士):
      这个转换函数我有用C写过,你的代码也看到过.谢谢. 
      不过, 我想问,是不是网页用了gb2312的,在繁体平台输入的数据都给作了内码转换? 但好象还是有没有转换成功的(用问号表示.),这种问题如何解决?
    to pcdreama(峰幻) :
      就麻烦你也贴出来吧.谢谢.
      

  4.   

    不能贴,我放在一个服务器上,去下载吧。
    http://www.eccreation.com/big_gb.zip
      

  5.   

    Oct Dec Hex Char Oct Dec Hex Char   
    --------------------------------------------------------------------------------
     
    000 0 00 NUL '\0' 100 64 40 @        
     
    001 1 01 SOH 101 65 41 A        
     
    002 2 02 STX 102 66 42 B        
     
    003 3 03 ETX 103 67 43 C        
     
    004 4 04 EOT 104 68 44 D        
     
    005 5 05 ENQ 105 69 45 E        
     
    006 6 06 ACK 106 70 46 F        
     
    007 7 07 BEL '\a' 107 71 47 G        
     
    010 8 08 BS '\b' 110 72 48 H        
     
    011 9 09 HT '\t' 111 73 49 I        
     
    012 10 0A LF '\n' 112 74 4A J        
     
    013 11 0B VT '\v' 113 75 4B K        
     
    014 12 0C FF '\f' 114 76 4C L        
     
    015 13 0D CR '\r' 115 77 4D M        
     
    016 14 0E SO 116 78 4E N        
     
    017 15 0F SI 117 79 4F O        
     
    020 16 10 DLE 120 80 50 P        
     
    021 17 11 DC1 121 81 51 Q        
     
    022 18 12 DC2 122 82 52 R        
     
    023 19 13 DC3 123 83 53 S        
     
    024 20 14 DC4 124 84 54 T        
     
    025 21 15 NAK 125 85 55 U        
     
    026 22 16 SYN 126 86 56 V        
     
    027 23 17 ETB 127 87 57 W        
     
    030 24 18 CAN 130 88 58 X        
     
    031 25 19 EM 131 89 59 Y        
     
    032 26 1A SUB 132 90 5A Z        
     
    033 27 1B ESC 133 91 5B [        
     
    034 28 1C FS 134 92 5C \ '\\'        
     
    035 29 1D GS 135 93 5D ]        
     
    036 30 1E RS 136 94 5E ^        
     
    037 31 1F US 137 95 5F _        
     
    040 32 20 SPACE 140 96 60 `        
     
    041 33 21 ! 141 97 61 a        
     
    042 34 22 " 142 98 62 b        
     
    043 35 23 # 143 99 63 c        
     
    044 36 24 $ 144 100 64 d        
     
    045 37 25 % 145 101 65 e        
     
    046 38 26 & 146 102 66 f        
     
    047 39 27 ' 147 103 67 g        
     
    050 40 28 ( 150 104 68 h        
     
    051 41 29 ) 151 105 69 i        
     
    052 42 2A * 152 106 6A j        
     
    053 43 2B + 153 107 6B k        
     
    054 44 2C , 154 108 6C l        
     
    055 45 2D - 155 109 6D m        
     
    056 46 2E . 156 110 6E n        
     
    057 47 2F / 157 111 6F o        
     
    060 48 30 0 160 112 70 p        
     
    061 49 31 1 161 113 71 q        
     
    062 50 32 2 162 114 72 r        
     
    063 51 33 3 163 115 73 s        
     
    064 52 34 4 164 116 74 t        
     
    065 53 35 5 165 117 75 u        
     
    066 54 36 6 166 118 76 v        
     
    067 55 37 7 167 119 77 w        
     
    070 56 38 8 170 120 78 x        
     
    071 57 39 9 171 121 79 y        
     
    072 58 3A : 172 122 7A z        
     
    073 59 3B ; 173 123 7B {        
     
    074 60 3C < 174 124 7C |        
     
    075 61 3D = 175 125 7D }        
     
    076 62 3E > 176 126 7E ~        
     
    077 63 3F ? 177 127 7F DEL 
    说明Oct Dec Hex Char 分别表示8进制,10 ,16和字符ASCII编码为7位有效码,而非ASCII的如汉字则采用双字节表达一个汉字,通过字节最高位b7置1来实现。许多8位码(比如 ISO 8859-1, Linux 的默认字符集)容纳 ASCII 作为它们的下半部分.
    所以在写的时候必须参考iso_8859_1to  jyc_nj(老蔣) :
    问号的问题,我想把,函数中的判断的标准64改成63(?)应该可以吧
      

  6.   

    to _Shakespeare(网络骑士):
      不好意思. 我可能还要问,是不是网页用了gb2312的,在繁体平台输入的数据都给作了内码转换? 
      用问号表示的地方,是不是因为找不到对应的gb2312(毕竟big5字库比gb2312大),不可显字符都一概用?表示.
      因为如果我把网页改成charset=big5,先前的数据完全是乱码了.to zaowei21(水里的乌鸦):
      愿闻其详.
      

  7.   

    to jyc_nj(老蔣) 
    我做的时候没有遇到过有”问号“的问题。不过你的猜测很有可能,继续研究……
      

  8.   

    http://www.csdn.net/expert/topic/587/587647.xml?temp=.6069757看看
      

  9.   

    to _Shakespeare(网络骑士):
      以前这些页面用的是charset=big5, 繁体自不用说, 简体下也是很正常.而且确实是big5里有很多字转换不到对应的简体字.
      

  10.   

    to _Shakespeare(网络骑士)
    你的程序是不是从以前的www.oso.com.cn那里弄来的?
    原作者就是我啊,我以前在oso叫caocao,那段程序执行效率不佳,我早就优化过了,不过提交给oso,他们不采纳,后来oso倒闭了。