http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=4423

解决方案 »

  1.   

    简体中文编码gb2312和繁体中文编码big5都被统一的规划在扩展中文编码gbk中了,当以unicode编码访问时,并不存在编码转换问题。
    gb2312和big5到unicode编码的对照,分属936和950代码页。
    你可在网上找到这些东西,也可以自行构造。
    测试代码:
    page936.php
    <?php
    header("Content-Type: text/html; charset=gb2312");
    echo "<title>936 代码页</title>";
    $i = $_GET['i'];
    if($i<129)
      $i = 129;
    if($i>254)
      $i = 254;
    if($i != 129) {
      echo "<a href='?i=129'>首页</a>\n";
      echo "<a href='?i=".($i-1)."'>上页</a>\n";
    }
    if($i != 254) {
      echo "<a href='?i=".($i+1)."'>下页</a>\n";
      echo "<a href='?i=254'>尾页</a>\n";
    }
    echo "<table border CELLPADDING='1' CELLSPACING='0'>";
    printf("<tr><th>%2X</th>",$i);
    for($j=0;$j<16;$j++)
      printf("<th>%X</th>",$j);
    echo "</tr>";
    for($j=64;$j<255;$j++) {
      if($j%16 == 0) {
        if($j>64)
          echo "</tr>";
        printf("<tr><th>%X</th>",$j/16);
      }
      if($j==127)
        echo "<td></td>";
      else {
        $v = pack("S",$j*256+$i);
        $v = chr($i).chr($j);
        echo "<td>$v</td>";
      }
    }
    echo "<td></td></tr></table>";
    ?>
    <script>
    obj = document.all.tags("TD");
    for(i=0;i<obj.length;i++)
      if(obj[i].innerHTML != "")
        obj[i].innerHTML += "<br>"+obj[i].innerHTML.charCodeAt().toString(16).toUpperCase();
    </script>page950.php
    <?php
    header("Content-Type: text/html; charset=big5");
    echo "<title>950 絏[代码页]</title>";
    $i = $_GET['i'];if($i < 0xa1)
      $i = 0xa1;
    if($i > 0xf9)
      $i = 0xf9;
    if($i != 0xa1) {
      echo "<a href='?i=".(0xa1)."' title='[首页]'></a>\n";
      echo "<a href='?i=".($i-($i==0xc9?3:1))."' title='[上页]'></a>\n";
    }
    if($i != 0xf9) {
      echo "<a href='?i=".($i+($i==0xc6?3:1))."' title='[下页]'></a>\n";
      echo "<a href='?i=".(0xf9)."' title='[尾页]'>Ю</a>\n";
    }
    echo "<table border CELLPADDING='1' CELLSPACING='0'>";
    printf("<tr><th>%2X</th>",$i);
    for($j=0;$j<16;$j++)
      printf("<th>%X</th>",$j);
    echo "</tr>";
    for($j=64;$j<255;$j++) {
      if($j%16 == 0) {
        if($j>64)
          echo "</tr>";
        printf("<tr><th>%X</th>",$j/16);
      }
      if($j > 0x7e && $j < 0xa1)
        echo "<td></td>";
      else {
        $v = pack("S",$j*256+$i);
        $v = chr($i).chr($j);
        echo "<td>$v</td>";
      }
    }
    echo "<td></td></tr></table>";
    ?>
    <script>
    obj = document.all.tags("TD");
    for(i=0;i<obj.length;i++)
      if(obj[i].innerHTML != "")
        obj[i].innerHTML += "<br>"+obj[i].innerHTML.charCodeAt().toString(16).toUpperCase();
    </script>
      

  2.   

    http://www.iitong.com/php/bbs/attachment.php?aid=27