如何将这种米萨市转成汉字? 我用一个xls类读取xls文件时,在网页显示出来的是正常的汉字,但写进数据库时是米萨市这样的编码?我要怎么转成汉字写进数据库? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 iconv('ASCII', 'utf-8//IGNORE', '米萨市')把里面的utf-8改为你自己的编码 比如utf-8或者gbk之类的 刚搜索到的,试了可以,5 楼xuzuning(唠叨)回复于 2004-12-07 09:16:40 得分 70<?php/** 等价于js的unescape函数 **/function unescape($str){/** 回调函数 **/ function unescape_callback($r) { if ($r[1] || $r[2]) return iconv("UCS-2","GB2312", pack("H4",$r[1] . $r[2])); if ($r[3]) return iconv("UCS-2","GB2312", pack("n", $r[3])); return $r[0]; } $str = rawurldecode($str); return preg_replace_callback("/%u(.{4})|&#x(.{4});|&#(\d+);|.+/", 'unescape_callback', $str); } echo unescape("最大挑战");?> header("Content-type:text/html;charset=utf-8");function foo($s){ //0x0000 -0x007f,ascii区 //0xxxxxxx x为unicode二进制 if($s <0x007f) $str = chr(bindec(sprintf("%08b",$s))); //0x0800 - 0xffff,中文区 //1110xxxx 10xxxxxx 10xxxxxx x为unicode二进制 elseif($s > 0x0800 && $s < 0xffff) { $c = sprintf("%018b",$s); $c3 = str_split($c,6); foreach($c3 as $k => $v) { $c3[$k] = "00".$v; } return chr(0xe0 | bindec($c3[0])) .chr(0x80 | bindec($c3[1])) .chr(0x80 | bindec($c3[2])); } //其余的unicode编码区,请对照网上的unicode - utf8转换格式,写全代码。}$unicodeString = '米萨市';$s = preg_replace("/&#(\d+)/e","foo('\\1')",$unicodeString);echo $s; echo html_entity_decode('米',ENT_COMPAT,'UTF-8'); 那个不算乱码,是浏览器可识别的unicode码式。 讨论一下为何PHP会同时存在elseif 和else if RMB求一个小作业关于php字符串中插入随机字符串 留言板只能传递英文而不能传递中文。 请教高手一个问题,看一下为啥子。 被Ajax调用的php程序中alert的内容如何显示? php初学者问题 php是不是落魄了 想找一个没有ZEND过的程序作参考 PHP+MYSQL 和 JS 相关的。 如何防止網頁刷新帶來的問題? 关于图像引用的速度的讨论 文件内容排序(十万火急) 急!!局域网的其他电脑不能访问服务器的Apache
回复于 2004-12-07 09:16:40 得分 70<?php
/** 等价于js的unescape函数 **/
function unescape($str)
{/** 回调函数 **/
function unescape_callback($r)
{
if ($r[1] || $r[2])
return iconv("UCS-2","GB2312", pack("H4",$r[1] . $r[2]));
if ($r[3])
return iconv("UCS-2","GB2312", pack("n", $r[3]));
return $r[0];
}
$str = rawurldecode($str);
return preg_replace_callback("/%u(.{4})|&#x(.{4});|&#(\d+);|.+/", 'unescape_callback', $str);
}
echo unescape("最大挑战");
?>
{
//0x0000 -0x007f,ascii区
//0xxxxxxx x为unicode二进制
if($s <0x007f)
$str = chr(bindec(sprintf("%08b",$s)));
//0x0800 - 0xffff,中文区
//1110xxxx 10xxxxxx 10xxxxxx x为unicode二进制
elseif($s > 0x0800 && $s < 0xffff)
{
$c = sprintf("%018b",$s);
$c3 = str_split($c,6);
foreach($c3 as $k => $v)
{
$c3[$k] = "00".$v;
} return chr(0xe0 | bindec($c3[0]))
.chr(0x80 | bindec($c3[1]))
.chr(0x80 | bindec($c3[2]));
}
//其余的unicode编码区,请对照网上的unicode - utf8转换格式,写全代码。
}
$unicodeString = '米萨市';
$s = preg_replace("/&#(\d+)/e","foo('\\1')",$unicodeString);
echo $s;