PHP读取以utf8_unicode_ci编码的mysql数据

时间:2011-05-27 15:19:31

标签: php mysql

我有以下php代码:

<?php
mysql_connect("localhost","root","*****");
mysql_select_db("MyData");
$sql=mysql_query("select * from menu");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>

我的数据库在utf8_unicode_ci上编码。 因此,当我在浏览器中读取输出时,拉丁字符显示良好,但希腊字符显示为“???????”。当我读取数据库中的数据时,会定期显示。 有人可以帮我解决一下我的php代码吗?

5 个答案:

答案 0 :(得分:6)

将这两个查询添加到mysql_select_db("MyData");之后:

mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");

答案 1 :(得分:2)

尝试

header('Content-type: text/plain;charset=UTF-8');

您需要在脚本print()调用之前执行此操作。

答案 2 :(得分:1)

PHP:

header('Content-Type: text/html; charset=utf-8');

mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");

HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

文件:使用记事本将文件转换为UTF-8

答案 3 :(得分:0)

看看你的html编码,因为它可能是ISO-LATIN-1默认值,因此你的显示问题不是sql。 在这种情况下,您想要执行以下操作 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head> <?php print(json_encode($output)); ?>
</html>

答案 4 :(得分:0)

我用与MBarsi类似的方式解决了它,在选择数据库后添加了一行代码,但是使用了mysqli:

$mysqli->select_db("database"); 
$mysqli->set_charset("utf8");
相关问题