只需要...
提交页+处理页+数据库
都是在用 utf8处理页做下面的处理就可以入数据库了
if (!get_magic_quotes_gpc()) {
    $lastname = addslashes($_POST['content']);
} else {
    $lastname = $_POST['content'];
}

解决方案 »

  1.   

    页面中的编码、PHP中的编码和数据库的编码必须一致,
    这样就不会出现乱码了。
      

  2.   

    如果页面和数据库的编码不同,可以在PHP转换,
    转换用mb_convert_encoding函数
      

  3.   

    用iconv进行两种编码转换就可以了.
    搞得如么复杂做啥,
    还要先用正则匹配中文,然后再对中文进行转换.呵呵 .
    不知道你的目的为啥?
      

  4.   

    PHP中没有必要用那个自写提转码函数,应有更简单的办法
      

  5.   

    呵呵,下午有事出去了,没想到这么多解决方案....谢谢大家了...我用addSlashes()把$_POST处理了,能正确的过滤和插入任何字符....
    /*
    但是还有一点不明白的addSlashes()在php手册中过滤的字符不包括;(分号)比如说下面这个测试字段:abc你好;我好"大家好",'这是个测试函数' _-+=`~!@#$%^&*()\|[]{}:?/<>转义之后是abc你好;我好"大家好",\\\'这是个测试函数\\\' _-+=`~!@#$%^&*()\\\\|[]{}:?/<>sql语句中';'过滤是怎么实现的...
    */
    ----------------------------------------------
    写到这里才想起来,语句中的分号都是在('','',';')这种位置...不需要过滤....囧.....
    我纠结了一天正则式,就为了过滤个分号,结果......
    保留注释这个问题...警戒自己..告诫他人...
      

  6.   


    楼主打开了魔术引号了??呵呵,如果你在php.ini打开了magic_quotes_gpc,那么你没有必要在addslashes,因为在你处理前,那个变量已经被转义了。不说这个,说你那个分号,如果你的数据库是MySQL,你可以用mysql_real_escape_string函数进行转义,这样对数据库的专义比addslashes好很多。如果你用addslashes,楼主可以在执行这个函数后用str_replace($string,";","\;");就可以了。我给你个函数:
    <?php
    function addslashes_str($str){
    $str=addslashes($str);
    $str=str_replace($str,";",'\;');
    return $str;
    }
    function stripslashes_str($str){
    $str=stripslashes($str);
    $str=str_replace($str,'\;',";");
    return $str;
    }
    ?>