utf-8也只是ascii的一种。后来中手册上找到了个,把他改为了批量转换,还增加了一个常用的ascii代码还原字符。找可以把中文转ascii码的php代码,原作者是qh663
我在一个获取到的xml中提取数据,然而得到的数据是这样的
$string = '半自動波';
这样编码的字符在浏览器中能正常显示,但是直接存取这些数据却是乱码
只好转换一下,找来找去还是找回喜悦村,^_^
header("Content-Type: text/html; charset=UTF-8");
$string = '半自動波';
echo ascii::decode($string);
可以实现多种语言转换为ASCII,也可以实现ASCII convert utf-8
原文地址在这里
http://www.phpx.com.cn/30020/viewbbs_129185.html
<?php
class ascii{
function decode($str) {
preg_match_all("/(\d)/", $str,$a);
$a = $a[0];
foreach ($a as $dec){
if ($dec < 128) {
$utf .= chr($dec);
} else if ($dec < 2048) {
$utf .= chr(192 + (($dec - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
} else {
$utf .= chr(224 + (($dec - ($dec % 4096)) / 4096));
$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
}
return $utf;
}
function encode($c){
$len = strlen($c);
$a = 0;
while ($a < $len){
$ud = 0;
if (ord($c)>=0 && ord($c)<=127){
$ud = ord($c);
$a += 1;
}else if (ord($c)>=192 && ord($c)<=223){
$ud = (ord($c)-192)*64 + (ord($c)-128);
$a += 2;
}else if (ord($c)>=224 && ord($c)<=239){
$ud = (ord($c)-224)*4096 + (ord($c)-128)*64 + (ord($c)-128);
$a += 3;
}else if (ord($c)>=240 && ord($c)<=247){
$ud = (ord($c)-240)*262144 + (ord($c)-128)*4096 + (ord($c)-128)*64 + (ord($c)-128);
$a += 4;
}else if (ord($c)>=248 && ord($c)<=251){
$ud = (ord($c)-248)*16777216 + (ord($c)-128)*262144 + (ord($c)-128)*4096 + (ord($c)-128)*64 + (ord($c)-128);
$a += 5;
}else if (ord($c)>=252 && ord($c)<=253){
$ud = (ord($c)-252)*1073741824 + (ord($c)-128)*16777216 + (ord($c)-128)*262144 + (ord($c)-128)*4096 + (ord($c)-128)*64 + (ord($c)-128);
$a += 6;
}else if (ord($c)>=254 && ord($c)<=255){ //error
$ud = false;
}
$scill .= "&#$ud;";
}
return $scill;
}
}
?>
下载utf82ascii源代码
http://www.dayanmei.com/download.php?filename=class.ascii.rar