当我想打印出从服务器中获取的jQuery AJAX的输出时。它没有显示正确的字符集。我想要的是获取š
而不是?
或者在从服务器发送数据时不使用utf8_decode()
,我得到ĹĄ
。所有文件script.js
和服务器php proceed.php
都以UTF-8保存并设置为UTF-8。数据库也设置为UTF-8。来自数据库的所有其他请求都提供了正确的字符集。我已经尝试了大部分的事情。
在AJAX的.js
文件中:
$.ajaxSetup({
url: "proceed.php", //file to procces data
ContentType : 'charset=UTF-8', // tried here
global: false,
type: "POST",
dataType: "html" // change to text/html, application/text doesnt work at all
});
在.php
档案中:
mysql_query("SET NAMES utf8");
$output = utf8_decode($sql_result);
所有可能的组合。
CODE: PHP
if(!empty($_POST['select_had'])){
$zem = $_POST['select_had'];
$vysledek = mysql_query("SELECT typ_hadanky, jazyk FROM hlavolam RIGHT JOIN hadanka ON hlavolam.id_hlavolamu=hadanka.id_hlavolamu WHERE zeme_puvodu='$zem'");
$out = "";
while ($zaznam = mysql_fetch_array($vysledek)) {
$zaz = $zaznam['jazyk'];
$out .= "<option>".$zaz."</option>";
}
$vys = utf8_decode($out);
echo $vys;
}
jQuery的:
$("#sel_had_zem").change(function(){
var select_had = $("#sel_had_zem option:selected").text();
$.ajax({
data:{'select_had':select_had},
success: function(data){
$("#sel_had_jaz option").nextAll().remove();
$("#sel_had_jaz").append(data);
},
error: function(){
alert('No server response');
}
});
});