0

我试图在文本框中显示字符š,但它只显示单词中的其他字母。我正在从数据库中获取数据,并使用 json_encode 通过 xmlhttp.responseText 发送数据。执行 alert(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)));
?>
4

3 回答 3

1

U+009A 是单字符介绍器,与 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 )

于 2012-09-12T17:30:34.730 回答
1

在行中添加

$mysql->query("SET CHARACTER SET 'utf8'");

loadTextBox.php连接到数据库之后和 SQL 查询之前并使用utf8_encode删除行修复它。

于 2012-09-16T05:03:54.073 回答
1

您使用的 db 或 json 编码器都说它具有 Unicode 数据,但实际上输出的是Windows-1252

于 2017-07-27T15:40:31.417 回答