iconv()、bin2hex()、UTF-8的使用以及实现问题(急!)
利用PHP如何实现 中文与UTF-8之间的转化? 问题点数:20、回复次数:9Top
1 楼xuzuning(唠叨)回复于 2004-12-01 08:29:19 得分 0
汉字到UTF-8
iconv("GB2312","UTF-8",$text);
iconv("GBK","UTF-8",$text);
UTF-8到汉字
iconv("UTF-8","GB2312",$text);
iconv("UTF-8","GBK",$text);
Top
2 楼javavip(☆★☆★☆★)回复于 2004-12-01 15:15:00 得分 0
谢谢!
在WAP浏览器下需要Unicode编码,该如何转换?
比如 “我”转换后是 “我”
如此格式如何转换?Top
3 楼javavip(☆★☆★☆★)回复于 2004-12-01 16:10:35 得分 0
再如:“合作”转换后是“合作”Top
4 楼javavip(☆★☆★☆★)回复于 2004-12-02 02:54:06 得分 0
汉字转换为UNICODE已经按照“唠叨”的方法解决,非常感谢,那返过来,如何把如“合作”这样的编码转换为中文“合作”?
直接用 echo "合作"; 是可以看到“合作”,但查看源代码的时候还是 "合作" ,而我想看到的是“合作”,该怎么解决啊?Top
5 楼xuzuning(唠叨)回复于 2004-12-02 08:14:57 得分 20
对于unicode的ascii表示,你需要有一个与js等价的unescape函数:
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
}
通常使用的unicode的ascii表示有三种
比如“合作”可以表示为:
合作
或
%u5408%u4f5c
或
合作
参考:
function escape($str) {
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
}
return join("",$ar);
}
Top
6 楼javavip(☆★☆★☆★)回复于 2004-12-02 14:46:01 得分 0
xuzuning(唠叨) ,你是我见过PHP最厉害的,相信其它方面一定很强,谢谢你!
小弟先研究研究!Top
7 楼javavip(☆★☆★☆★)回复于 2004-12-02 14:50:27 得分 0
不太明白里面的原理,照抄没什么意义!
我太笨了Top
8 楼javavip(☆★☆★☆★)回复于 2004-12-02 15:02:58 得分 0
unescape()
使用之后查看源代码还是编码。Top
9 楼flytosnow(javavipt)回复于 2004-12-07 09:01:15 得分 0
顶下!Top




