mysql存储时乱码。我想用AJAX将几个数据POST到服务器,对应php文件接收并将数据存入mysql,mysql_query函数的插入语句参数里的内容还是正确的,但存入数据库后,所有中文就都变成乱码了,用mysql_query函数读取出来的中文也都是乱码。
我单独写了个不用$_POST参数,直接在php里用中文字符串存入数据的程序,读写中文都是正常的。

解决方案 »

  1.   

    这个就是编码问题了,就要看你ajax 的文件编码是什么了,要检察的包裹mysql库的编码,ajax文件的编码,php文件的编码等等。。总之要统一呀。比如全是utf-8的
    当然也可以用到转码iconv
      

  2.   

    能说详细点吗,我上网查过,有说是网页编码和mysql连接编码不一致的,解决方法我试了,在php里加header("Content-Type:text/html;charset=gb2312"),在静态页里加<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />,连接mysql时用mysql_query("set names 'gb3212'"),改mysql的my.ini配置文件我都试过了,都不行
    我初学,麻烦说明白一点。
      

  3.   

    PHP,MYsql,网页文件编码方式都设置成UTF-8即可
      

  4.   

    看看你那个php文件,本身的编码是什么,GB2312的,还是其他的
      

  5.   

    <?php
    //header("Content-Type:text/html;charset=gb2312");
    session_start();
    $con = mysql_connect();
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    //mysql_query("set names GBK");
    mysql_select_db("schedule", $con);
    $sql = "INSERT INTO event_des (name, des, hour, min, uid)
    VALUES ('".$_POST["name"]."','".$_POST["des"]."',".$_POST["hour"].",".$_POST["min"].",".$_SESSION['id'].")";
    if(mysql_query($sql))
    {
    // print_r($_POST);
    print_r($sql);
    print_r("Add event successful!");
    }
    else
    {
    print_r("failed".mysql_error());
    }
    mysql_close($con);
    ?>
      

  6.   

    2楼已经说的很明白了.这是mysql的你没有建对数据库.你直接google "mysql charset"
    就知道了
      

  7.   

    你如果利用ajax的json传值。那你需要在服务端进行一个编码的转换,这种可能是99%的需要那么做的。iconv()
      

  8.   

    乱码情况执行步骤:
    (1)文件保存时(文件本身编码utf-8)
    (2)header("content-type:text/html; charset=utf-8")
    或者在html中:
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    (3)写数据库设定字符集 mysql_query("set names utf8")
    (4)建立数据库和表时编码要统一成utf-8
      

  9.   

    问题解决了。网页的js里用encodeURIComponent编码中文数据,php里用iconv解码。
    但<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    mysql_query("set names 'gb3212'")都有什么用还是没搞懂,
    只弄明白了header("Content-Type:text/html;charset=gb2312")可以指定php输出的内容的编码,
    加了这一行,php返回给网页的中文,js可以正确读出了。
      

  10.   

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

    header("Content-Type:text/html;charset=gb2312")
    作用是一样的,让浏览器用gb2312编码读取文本。mysql_query("set names 'gb3212'") 是针对数据库的。