当我想打印jQuery AJAX的输出时,它已经从服务器接收到了。它没有显示正确的字符集。我想要的是得到Š
,而不是得到?
。所有文件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"
});
在.php
文件中:
mysql_query("SET NAMES utf8");
$output = utf8_decode($sql_result);
所有可能的组合。
更新:我已经在所有可能的变体中尝试了所有提出的方法,通过使用它们,我不会从服务器得到任何响应。我唯一一次得到至少soem响应是通过上面提到的设置——从字面上讲。设置AJAX dataType: "text/html"
和dataType: "application/html"
都没有帮助。
代码: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();
console.log(select_had);
$.ajax({
data:{'select_had':select_had},
success: function(data){
console.log(data);
$("#sel_had_jaz option").nextAll().remove();
$("#sel_had_jaz").append(data);
},
error: function(){
alert('No server response');
}
});
});
您需要在MySQL连接中而不是在MySQL查询中设置字符集。如果您使用MySQLi,那么您可以使用mysqli_set_charset()
内置的PHP函数。然而,如果你使用PDO,那么你可以这样使用它:
new PDO('mysql:host=localhost;dbname=DBNAME;charset=utf8;', USERNAME, PASSWORD);
您可以在此处找到有关mysqli_set_charset()
功能的更多信息:http://www.w3schools.com/php/func_mysqli_set_charset.asp
注意:请确保您已在HEAD
标记中添加了<meta charset="UTF-8">
。
尝试更改以下内容。。
dataType: 'html'
至
dataType: 'application/html'
保留
contentType: 'charset=utf8'
并将<?php header('Content-Type: application/html; charset=utf8'); ?>
添加到页面顶部。
对于错误报告,也将error_reporting(E_ALL);
放在页面顶部。如果出现任何错误,请发布该行的代码,并在OP帖子中发布错误消息。
对于您的错误
Resource interpreted as Document but transferred with MIME type application/html
在您的请求标头中,您已经发送了Content-Type:html,这意味着您希望将响应解释为html。现在,即使服务器向您发送PDF文件,您的浏览器也会尝试将其理解为HTML。这就是问题所在。
因此,需要一些信息来了解你到底想发送什么,以及接收端对这些数据做了什么?
您希望将PHP页面的输出设置为UTF-8并更正MIME类型:
mysql_query("SET NAMES utf8");
header( 'Content-Type: text/html; charset=utf-8' );
echo $sql_result;
exit;
这应该可以解决问题!