当前位置: 首页 > 图文教程 > 网络编程 > PHP > 关于BIG5-HKSCS的解决方法

PHP
require(),include(),require_once()和include_once()区别
Mysql和网页显示乱码解决方法集锦
php+mysql分页代码详解
一家之言的经验之谈php+mysql扎实个人基本功
php.ini中的php-5.2.0配置指令详解
php Undefined index和Undefined variable的解决方法
php中变量及部分适用方法
简单的PHP图片上传程序
php中cookie的作用域
PHP与MySQL开发中页面乱码的产生与解决
php日历[测试通过]
PHP之变量、常量学习笔记
php一些公用函数的集合
php5中类的学习
关于Intype一些小问题的解决办法
php中文字符截取防乱码
Mysql的GROUP_CONCAT()函数使用方法
php heredoc和phpwind的模板技术使用方法小结
PHP5中的时间相差8小时的解决办法
PHP截取汉字乱码问题解决方法mb_substr函数的应用

PHP 中的 关于BIG5-HKSCS的解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 294 ::
收藏到网摘: n/a

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