2011-05-27 30 views
0

编码的MySQL数据我有以下PHP代码:PHP读取utf8_unicode_ci

<?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代码有什么用?

+0

重复搜索它 – dynamic 2011-05-27 15:22:29

+0

可能重复[MySQL更改编码后抛出错误](http://stackoverflow.com/questions/6097364/mysql-throws-error-after -changing-encoding) – Johan 2011-05-27 15:28:17

回答

2

尝试

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

,就需要在你的脚本print()调用之前做到这一点。

+0

这是重复的。你sohuld知道30k代表 – dynamic 2011-05-27 15:23:02

+0

@ yes123,所以把链接的评论!高代表不是Mindreader制作的。 – Johan 2011-05-27 15:26:17

6

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

mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET NAMES utf8"); 
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>

0

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

$mysqli->select_db("database"); 
$mysqli->set_charset("utf8"); 
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