我试图从mysql数据库中检索中文字母,并在php上显示。我已经在网上试过了所有的东西,但它仍然显示给我看。在网站上。下面是与这个问题相关的代码:
<html class="fsvs" lang="zh-Hans" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />php部分:
$conn = mysqli_connect( $host, $user, $pass, $db );
if (!$conn) {
die('Database connection failed.');
}
//get gan char
mysql_query("SET character_set_results=utf8", $conn);
$query_gan = "SELECT * FROM gan WHERE gan_id = '$gan_id'";
$result_gan = mysqli_query($conn,$query_gan);
$row_gan = mysqli_fetch_array($result_gan);预先感谢:D
发布于 2016-10-08 05:29:26
当我遇到类似的问题时,我首先用php显示了我的文本的编码。
echo mb_detect_encoding ( $text );它显示来自我的查询的文本的编码。这显示了我从mysql_query获得ASCII时,我的数据库中有中文或俄文字符。
我所做的更改是在mysql_connect之后添加以下内容
mysql_set_charset('UTF8');我的数据库是utf8_unicode_ci排序规则,我可以看到汉字。
所以,如果mb_detect_encoding现在给你UTF8作为你的文本,那么你就可以显示汉字。
下一步是确保您传递给浏览器的内容有正确的标题.
header('Content-Type: text/html; charset=UTF-8');将上面的代码放在php中的代码顶部,以确保浏览器期待您的编码。
不过,这应该是问题所在,理想情况下,您应该使用PDO或mysqli,而不是使用mysql_connect方法。在这种情况下,等效的过程样式命令是..
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'test');
mysqli_set_charset($link, "utf8");其中,$link相当于您与数据库的连接。
发布于 2016-10-08 06:02:26
不要混合mysql_*和mysqli_*调用,只使用后者。
https://stackoverflow.com/a/38363567/1766831解释了如何处理?。特别是它指出
UTF-8在MySQL之外)。把这个修好。CHARACTER SET utf8mb4。把这个修好。你的<meta ...>很好。
在MySQL中,中文使用utf8mb4 (而不是utf8)。
已经在表中的问号不能再转换成中文了。
https://stackoverflow.com/questions/39928969
复制相似问题