- 论坛徽章:
- 0
|
在utf-8里,各种字符混合,如何分别判断每一个字符是属于big5还是gb还是英文等等。。。
完全没思路啊,晕倒。。。
请有utf-8下汉字判断经验的朋友说一下,谢谢了!
补充:
主要问题是这样的,网页是utf-8编码,但数据库统一为big5编码,
所以,所有在utf-8页面提交后的数据必需转换为big5码再保存,
问题出现了,提交的数据由于可能是简体中文也可能是繁体中文,或者是它们的混合。
有些文字可以直接用
#utf8 -> big5
$text= encode("big5",decode("utf8",$text));
|
转换,但是有些简体中文没法转,例如“无”字就没法转换,变成了“?”号。
现在只能这样,找出没法转换的字符(怎么找?),然后unpack成ucs格式(能转成big5的字符不能用ucs,因为程序的要求)。
关键怎么知道哪些字符没法转成繁体呢?
进展,现在有一个效率很低的解决方法,也没法保证会不会出现特殊的情况或问题,请大家帮忙优化一下代码,谢谢啦
$text = encode("ucs-2be",decode("utf8",$text));
$text_big5 .= $_ for map { if (encode("big5",decode("utf8",encode('utf8', decode('utf16-be', pack('n', $_))))) ne "?" || encode('utf8', decode('utf16-be', pack('n', $_))) eq "?") { $_ = encode("big5",decode("utf8",encode('utf8', decode('utf16-be', pack('n', $_))))) } else{ '&#' . $_ . ';' } } unpack 'n*', $text; |
[ 本帖最后由 freeand 于 2007-11-2 20:24 编辑 ] |
|