在我的索引PHP页面中,我定义了这个字符集:
header("Content-Type: text/html; charset=UTF-8");
以及带有meta
标记的HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在此页面上,我使用Ajax(jQuery)提交表单:
$('#action_button').click(function() {
var azione = $('#form-post').attr('action');
var datiform = $('#form-post').serialize();
send = $.ajax({
type: "POST",
url: azione,
data: datiform,
dataType: "json",
beforeSend: function(){
...
},
success: function(msg){
...
}
});
return false;
});
在接收数据的页面中,我设置了标题
header("Content-Type: text/html; charset=UTF-8");
我要求发布数据:
$nome = htmlentities(rtrim(ltrim(strip_tags(addslashes($_POST['nome']))))) ;
但数据未在数据库中正确注册;人物òèìùàé被严格解释,如Ä和类似。我已经测试了不同的方法,但没有成功,但如果我发送没有Ajax(jQuery)的表单,它工作正常!
答案 0 :(得分:2)
问题可能在您的数据库中。您可以echo $nome;
确定。我建议您尝试使用此功能连接到数据库。同时将表格字符集转换为utf8_unicode_ci
...
function connect($server, $database, $username, $password, $charset = "UTF8"){
$link = mysql_connect($server, $database, $password);
if(!$link){
die("Unable to connect to database server.");
}
mysql_selectdb($database);
if(function_exists("mysql_set_charset")){
mysql_set_charset($charset, $link);
}else{
mysql_query("SET NAMES $charset");
}
}
设置表字符集...
ALTER TABLE `my_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
数据库...
ALTER DATABASE `my_database` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci