关于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 array_flip() 删除数组重复元素

方法如下: $arr = array(…………) ;//假设有一万个元素的数组,里面有重复的元素。 $arr = array_flip(array_flip($arr)); //这样便可...

PHP数字前补0的自带函数sprintf 和number_format的用法(详解)

很多时候我们需要对数字进行格式化,比如位数不足前面加0补足。用PHP可以很轻易实现,因为PHP自带了相关功能的函数。 <?php //生成4位数,不足前面补0...

php数组转成json格式的方法

本文实例讲述了php数组转成json格式的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:function array_to_json( $array ){ &nbs...

如何实现php图片等比例缩放

通过文章给出的源代码可实现针对图片的等比缩放生成缩略图的功能,非常实用的技巧哦。 新建文件index.php,需要在统计目录下有个图片为pic.jpg(可根据源码进行更改图片的名称) 源...

获取远程文件大小的php函数

复制代码 代码如下:<?php function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($u...