关于BIG5-HKSCS的解决方法

yipeiwu_com7年前PHP代码库
非常苦悶地發現,原來一直困擾的HKSCS問題PHP一直也支持。只不過名稱不叫HK-SCS,叫BIG5-HKSCS。
以下是HK增補字符集的解決方案:
HTML頁面設為UTF-8,
寫入數據庫前先:iconv('big5-hkscs','utf8', $string)
需轉為UNICODE就用以下函數
function String2Unicode($data, $language)
{
 $data = nl2br(trim($data));
 $data = str_replace('<br />',chr(13),$data);
 $str = '';
 preg_match_all("/[\x80-\xff]?./",$data,$ar);
 debug($ar); 
 foreach($ar[0] as $v)
 {
  if($v != '' && $v!=chr(13))
  {
   $str .= "&#".utf82unicode(iconv($language,"UTF-8",$v)).";";
  }else {
   $str .=$v;
  }
 }
 return $str;
}
function utf82unicode($c) {
 switch(strlen($c)) {
  case 1:
   return ord($c);
  case 2:
   $n = (ord($c[0]) & 0x3f) << 6;
   $n += ord($c[1]) & 0x3f;
   return $n;
  case 3: 
   $n = (ord($c[0]) & 0x1f) << 12;
   $n += (ord($c[1]) & 0x3f) << 6;
   $n += ord($c[2]) & 0x3f;
   return $n;
  case 4:
   $n = (ord($c[0]) & 0x0f) << 18;
   $n += (ord($c[1]) & 0x3f) << 12; 
   $n += (ord($c[2]) & 0x3f) << 6;
   $n += ord($c[3]) & 0x3f;
   return $n;
 }
}

相关文章

php自定义apk安装包实例

本文实例讲述了php自定义apk安装包的方法,分享给大家供大家参考。具体实现方法如下: 众所周知,apk格式安装文件是android智能系统的安装文件,下面我们来看一个利用php实现自定...

php 操作调试的方法

配置:1.到windows.php.net/download 网站下载 vc9 x86 thread safe 2.解压文件到目录。 3.改php.ini (将php.ini_d.......

用php定义一个数组最简单的方法

如何用php定义一个数组? php中定义数组的方法: 1、PHP定义数组的格式: 数组名=array(); 如:$aa=array();//这样就定义了一个数组, 之后给元素赋值:...

Linux平台PHP5.4设置FPM线程数量的方法

本文实例讲述了Linux平台PHP5.4设置FPM线程数量的方法。分享给大家供大家参考,具体如下: PHP5.4安装完毕后,FPM的默认配置文件位于/usr/local/php/etc/...

PHP中for循环语句的几种变型

PHP中for循环语句的几种变型˂!-- google 的广告条 2005年09月20日换位置 唉,22号被停了.郁闷,没作弊呀 11.27日重开了 ˂!-- goog...