我必須將hindi文本存儲在MySQL數據庫中,使用PHP腳本獲取它並將其顯示在網頁上。我做了以下內容:使用PHP和MySQL存儲和顯示unicode字符串(हिन्दी)
我創建了一個數據庫,並將其編碼設置爲UTF-8,並將排序規則設置爲utf8_bin
。 我在表中添加了一個varchar字段,並將其設置爲在charset屬性中接受UTF-8文本。
然後我開始爲它添加數據。在這裏,我不得不復制existing site的數據。 印地文看起來像這樣:回覆:05:30
我直接將這段文字複製到我的數據庫中,並使用PHP代碼echo(utf8_encode($string))
來顯示數據。在這樣做的瀏覽器顯示我「??????」。
當我通過瀏覽器中的「查看源代碼」插入文本的UTF等效內容時,但是,將此轉換爲सूर्योदय
。
如果我在數據庫中輸入並存儲सूर्योदय
,它會完美轉換。
所以我想知道的是我如何可以直接將數據庫存儲到我的數據庫並獲取它並使用PHP將其顯示在我的網頁中。
另外,任何人都可以幫助我理解,如果有一個腳本,當我輸入सूर्योदय,給我सूर्योदय
?
發現的解決方案
我寫了這爲我工作了下面的示例腳本。希望它可以幫助別人太
<html>
<head>
<title>Hindi</title></head>
<body>
<?php
include("connection.php"); //simple connection setting
$result = mysql_query("SET NAMES utf8"); //the main trick
$cmd = "select * from hindi";
$result = mysql_query($cmd);
while ($myrow = mysql_fetch_row($result))
{
echo ($myrow[0]);
}
?>
</body>
</html>
轉儲我的數據庫中存儲印地文UTF字符串是
CREATE TABLE `hindi` (
`data` varchar(1000) character set utf8 collate utf8_bin default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `hindi` VALUES ('सूर्योदय');
現在的問題是,它是怎麼不指定「元」工作或頭信息?
謝謝!
另外:http://stackoverflow.com/questions/1085093/strategy-for-supporting-unicode-multi-language-in-php5/ – deceze 2009-07-29 08:34:28
「集名UTF8」 奏效了我!謝謝 – 2009-07-29 09:17:42
爲什麼即使沒有設置標題也能正常工作? – 2009-07-29 09:34:14