关于BIG5-HKSCS的解决方法

  非常苦悶地發現,原來一直困擾的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;

  }

  }