问题:外来字符不会按原样显示。这包括德语,日语,俄语和除英语以外的所有其他语言(完美地运作)。 Ones PHP通过jQuery AJAX调用MySQL调用它应该返回信息并将其显示在页面上。调用并显示数据。但是对于非英文字符,结果显示为“?”。
在phpMyAdmin中显示的数据应该是日语,德语等。但是从MySQL获取的内容并不是这样返回的。
问题不是由浏览器引起的,因为我的浏览器支持所有语言编码。
MySQL编码:UTF8_GENERAL_CI
页面编码:UTF-8
<meta charset="utf-8" />
问题可能在于PHP从MySQL获取数据,因为在通过phpMyAdmin查看的MySQL中看起来很好。所以这是用于从MySQL获取此数据的代码。除非必须在此文件中包含编码。
view.php(从MySQL获取所需数据可能是编码问题返回的原因???)
$q = mysql_query("SELECT * FROM `notice` WHERE nid = '".$nid."'");
$a = mysql_fetch_array($q);
$nid = stripslashes($a['nid']);
$note = stripslashes($a['note']);
$type = stripslashes($a['type']);
$private = stripslashes($a['private']);
$date = stripslashes($a['date']);
$author = stripslashes($a['author'])
PS。编辑得更清楚。
答案 0 :(得分:5)
您很可能需要将数据库连接的字符集设置为UTF-8。
如何操作取决于您使用的数据库库。
在旧的mySQL库中,它将是
mysql_query("SET NAMES utf8");
(pre mySQL 5.0.7)和
mysql_set_charset("utf8");
用于mySQL 5.0.7及更新版本。
答案 1 :(得分:0)
尝试致电
mysql_query("SET NAMES utf8");
在您查询之前的某个地方。当然,如果你使用的是PHP。
答案 2 :(得分:-1)
请参阅: http://www.w3.org/TR/html4/charset.html#h-5.2.2
所以你应该使用:
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
理想情况下,此信息应在HTTP响应的标头中提供。
答案 3 :(得分:-1)
mysql utf-8不是真正的utf-8。它使用3个字节而不是4个字节。对于真正的utf-8,您必须使用utf8mb4:
mysql_query("SET NAMES utf8mb4");
mysql_set_charset("utf8mb4");