PHP对特殊字符的处理总结


PHP对特殊字符处理:

1.因为PHP处理的时候, 采用的是操作系统内码,如果是非 unicode编码的系统,比如XP中文版本,有些PHP代码就无法处理:


<?
echo "誠";
?>

可能因为诚的编码最后一位里面有转义字符:\  (D55C)  刚好,ASCII里面\正好也是(5c)

所以这种问题,只会出现在字符串最后一位的时候,

如果是mysql从数据中取出的数据呢,就不大会存在这种问题,

如果要存入数据库呢,我们可以这样做

<form name="f" method=POST action="">
<input type=text name=a>
<input type=submit name=c>
</form>
<?
include 'XXX.php';
$sql=new mysql_('test');
if(!empty($_POST['a'])) {

$aa = $_POST['a'];
if (get_magic_quotes_gpc()) {
$aa = stripslashes($aa);
} else {

}

$aa=mysql_escape_string($aa);
echo ("INSERT INTO admin(c_name,c_pass) value('$aa','$aa')");
$sql->query("INSERT INTO `admin`(i_id,c_name,c_pass) values(NULL,'$aa','$aa')");
}
>

Json的PHP解析处理,

因为JSON数据本身来讲,跟编码是没有关系的,但是不幸的是,跟PHP解析扯上勾了,所以必须要有一些改进。

可以json_decode的时候,可以先把字符转成utf-8

echo iconv("GBK","UTF-8",$a);

但有时有点特殊字符iconv会中断,比较可恨:点这里

所以需要用宽字符集

echo mb_convert_encoding($a,"UTF-8","GBK");

但还是会有点特殊字符解析不正确

$a="aaaaaaaaaaaaaa";
//echo iconv("GBK","UTF-8",$a);

echo mb_convert_encoding($a,"UTF-8","GBK");

  1. No comments yet.
(will not be published)

Switch to our mobile site