插入数据库时​​jquery $ .ajax和法语字符的问题

时间:2010-06-27 12:16:21

标签: jquery

我得到的法语人物看起来像这样,但是例如é。 我正在使用jquery ajax并使用php进行表单验证然后插入数据库, 我已经尝试了很多东西,但似乎没有什么可以摆脱这个问题,我知道这是因为jquery ajax,因为如果我只使用PHP eveything在数据库中进行简单的插入工作正常。

$(function(){
 $('#submit_maj_password_email').click(function(){
var _data= $(this.form).serialize()
//var encodedString = escape($("#email1").val());
 alert(_data)
  $.ajax({
        type: 'POST',
        url: 'valid.php?var=maj_password_email',
        beforeSend: function(){},
        data:_data,
        cache: false,
        success: function(html){
         $('div#error').html(html)

         }
     })
})

})

php文件:

<?php
if($_POST and $_GET["var"]=="maj_password_email"){ 
extract($_POST);  //we automatically extract $ variables
...validation....
...insertion in db.....
if( $password!=="default"  and password($password)==true ){
    $query=mysql_query("UPDATE sdf_inemails SET emails_email='$email' , emails_password=md5('$password')  WHERE  emails_id = '".$_COOKIE['_ID']."'")or die(mysql_error());
//mail
  }
}
?>

似乎没有任何帮助。 此致

2 个答案:

答案 0 :(得分:3)

与Pekka一样,AJAX请求默认提供UTF-8数据。

提取$ _POST变量的数据时,必须使用utf8_decode,如下所示:

$email = utf8_decode($_POST["txtEmail"]);

然后将其保存到您的数据库中。

您也不能忘记在PHP和HTML页面中设置正确的标题。

示例HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>

示例PHP:

<?php header("Content-Type: text/html; charset=ISO-8859-1",true); ?>

答案 1 :(得分:0)

为数据库表和包含法语数据的每个字段设置编码类型。 很可能 ISO-8859-1 将是法语的正确编码类型。

修改

在服务器脚本中放置一个echo以在保存之前验证数据。然后你就可以找到问题的起点。

<?php

$sql = "INSERT INTO {$TABLE} xxxxxx";
echo $sql;