Tho*_*sen 5 php mysql jquery character-encoding special-characters
好的,这就是问题所在:
我的php页面上有一个表单.当用户输入名称按下提交时,jQuery点击事件(在提交按钮上)收集信息并通过$ .ajax()传递它们.
$.ajax({
url: "ajax/addGatheringSignup.php",
type: "POST",
async: true,
dataType: 'json',
data: {
"id": $_GET['id'],
"name": $signupNameInput.val()
},
success: function(jsonData){
if(jsonData[0].feedback == "ok"){
$signupForm = $('#singupform');
$signupForm.html('Signup successful!');
}else{
Alert(jsonData[0].feedback);
}
},
error: function(){
Alert("error alert");
}
});
Run Code Online (Sandbox Code Playgroud)
如您所见,"name"字段是名称inputfield的值.但是当我将它提交到我的php页面(我没有在文本中格式化任何内容)时,它在我的MySql数据库中完全是垃圾.此刻我试图让丹麦字母æ,ø和å工作.
我知道我的mysql数据库使用的是UTF-8,我的index.php的元头看起来像这样(每个页面都是从index.php页面生成的... ex index.php?page = random):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
但是没有用.当我发布:"æÆ-øØ-åÅ"到数据库时,它保存为:"Ã|Ã-Ã-øÃ〜-Ã¥Ã...".有谁知道我要做什么?
编辑1:
我可以看到,在一个成功的ajax提交html我设置$ signupForm(上面的代码中的第13行)也显示错误(这通常是一些丹麦语,我写的丹麦字符提到)
编辑2(找到一个解决方案):
我找到了一个方法.$ .ajax()根据jQuery doc,始终将数据解析为UTF8.我不知道为什么这搞砸了我的代码,但是当我将*utf8_decode($ name)*添加到add-function时它解析正确(所以我猜我的charset必须设置为ISO-8859-1以某种方式隐藏? ).这让我更容易,因为我可以再次打开旧的charset ISO-8859-1并删除我的所有utf8_encode()函数.
我的最后一个问题是"编辑1"中出现的问题.在这里,我找到了一个如何转换UTF8字符串的解决方案(再次因为$ .ajax()):
function decode_utf8( s ){
return decodeURIComponent( escape( s ) );
}
Run Code Online (Sandbox Code Playgroud)