我正在尝试在文本框中显示字符š,但它只显示单词中的其他字母。我正在从数据库中获取数据,并使用json_encode通过xmlhttp.responseText发送它。当做警报(xmlhttp.responseText)时,角色会出现\ u009a,但在Unicode中,它表示U + 0161用于š。也许这就是它没有正确显示的原因?我正在使用Cpanel,并且我已将DB的所有编码设置为utf8,但它不会让我从ascii更改实际页面的编码。也许这会导致信件无法显示?
主页代码:
function loadDoc()
{
var xmlhttp;
// code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
// code for IE6, IE5
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
var a = JSON.parse(xmlhttp.responseText);
document.getElementById("textbox").value=a.first;
document.getElementById("textbox2").value=a.second;
document.getElementById("textbox3").value=a.third;
document.getElementById("textbox4").value=a.fourth;
document.getElementById("textbox5").value=a.fifth;
document.getElementById("textbox6").value=a.sixth;
}
}
xmlhttp.open("GET","loadTextBox.php?id=4",true);
xmlhttp.send();
}
loadTextBox.php代码:
<?php
header("Content-type: application/json");
---Placeholder for correct DB login info---
$result = $mysql->query(---Placeholder for correct SQL query---);
while ($row = $result->fetch_object())
{
$queryResult[] = $row->present_tense;
}
$textboxValue = $queryResult[0];
$textboxValue2 = $queryResult[1];
$textboxValue3 = $queryResult[2];
$textboxValue4 = $queryResult[3];
$textboxValue5 = $queryResult[4];
$textboxValue6 = $queryResult[5];
echo
json_encode(array('first'=>utf8_encode($textboxValue),'second'=>
utf8_encode($textboxValue2),'third'=>utf8_encode($textboxValue3),'fourth'=>
utf8_encode($textboxValue4),'fifth'=>utf8_encode($textboxValue5),'sixth'=>
utf8_encode($textboxValue6)));
?>
答案 0 :(得分:1)
U + 009A是SINGLE CHARACTER INTRODUCER,与你在这里看到的Caron非常相似:http://www.fileformat.info/info/unicode/char/9a/index.htm。
U + 0161是真正的Caron Unicode代码(http://www.fileformat.info/info/unicode/char/161/index.htm)
答案 1 :(得分:1)
添加行
$mysql->query("SET CHARACTER SET 'utf8'");
在连接到数据库之后和SQL查询之前在loadTextBox.php
内,并删除 utf8_encode 修复它的行。
答案 2 :(得分:1)
您使用的数据库或json编码器说它的数据为Unicode,但实际上是输出Windows-1252;