Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[经验] UTF8 中文轉換 BIG5 在PHP文件上之修改方法

[复制链接]
sunskyadmin 发表于 2011-10-2 17:54:45 | 显示全部楼层 |阅读模式
  1. //逐字轉換utf8字串為big5
  2. function utf8_2_big5($utf8_str) {
  3. $i=0;
  4. $len = strlen($utf8_str);
  5. $big5_str="";
  6. for ($i=0;$i<$len;$i++) {
  7. $sbit = ord(substr($utf8_str,$i,1));
  8. if ($sbit < 128) {
  9. $big5_str.=substr($utf8_str,$i,1);
  10. } else if($sbit > 191 && $sbit < 224) {
  11. $new_word=iconv("UTF-8","Big5",substr($utf8_str,$i,2));
  12. $big5_str.=($new_word=="")?"■":$new_word;
  13. $i++;
  14. } else if($sbit > 223 && $sbit < 240) {
  15. $new_word=iconv("UTF-8","Big5",substr($utf8_str,$i,3));
  16. $big5_str.=($new_word=="")?"■":$new_word;
  17. $i+=2;
  18. } else if($sbit > 239 && $sbit < 248) {
  19. $new_word=iconv("UTF-8","Big5",substr($utf8_str,$i,4));
  20. $big5_str.=($new_word=="")?"■":$new_word;
  21. $i+=3;
  22. }
  23. }
  24. return $big5_str;
复制代码
產生測試資料
為了測試到 big5 碼的每一個字元,所以必須寫一個程式產生 big5 碼的每一個字元。下列表格為 big5 碼的編碼範圍(參考倚天中文系統手冊),總共是 19,782 個字元。但其中包含了 63 個控制碼及 5809 個使用者造字碼,必須扣除,所以實際的字碼共有 13910 個字元。
BIG5 碼的範圍: (計 19,782 個)
高位元組: A1~FE, 8E~A0, 81~8D (計 126 個)
低位元組: 40~7E, A1~FE (計 157 個)
控制碼的範圍: (計 63 個)
控制碼: A3C0~A3E0 (計 33 個)
保留之控制碼: A3E1~A3FE (計 30 個)
使用者造字(USRFONT):(計 5,809 個)
第一段: FA40~FEFE (計 785 個)
第二段: 8E40~A0FE (計 2,983 個)
第三段: 8140~8DFE (計 2,041 個)


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-30 14:32 , Processed in 0.152052 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表