我得到的法语人物看起来像这样,但是例如é。 我正在使用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
}
}
?>
似乎没有任何帮助。 此致
答案 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;