UTF8和日文字符

时间:2011-05-15 06:02:10

标签: mysql unicode utf-8

问题:外来字符不会按原样显示。这包括德语,日语,俄语和除英语以外的所有其他语言(完美地运作)。 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。编辑得更清楚。

4 个答案:

答案 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");