2011-05-27 28 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