关于BIG5-HKSCS的解决方法

yipeiwu_com6年前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实现的简单对称加密与解密方法实例小结

本文实例讲述了PHP实现的简单对称加密与解密方法。分享给大家供大家参考,具体如下: 方法一:YII自带的加密方法 /** * 加密 * @var string [要加密的值] */...

php微信公众平台配置接口开发程序

php微信公众平台配置接口开发程序

在阅读这篇文章之前你要做以下的准备: 1.注册一个订阅号(通过微信公众平台https://mp.weixin.qq.com/); 2.注册新浪云并实名认证http://sae.sina....

php通过文件流方式复制文件的方法

本文实例讲述了php通过文件流方式复制文件的方法。分享给大家供大家参考。具体分析如下: php的stream_copy_to_stream()函数可以被用来将一个流中的数据复制到另一个。...

spl_autoload_register与autoload的区别详解

spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register — 注册__autoload()函数说明bool spl_au...

php中使用Akismet防止垃圾评论的代码

然而,人无完人,插(件)无完插!Akismet也并非完美,最近, 我常在被Akismet评判为垃圾的留言中找到“好人”的留言,然而,有时时间长了就自动删除了,损失珍贵的友情和留言。 别忘...