使用PHP和MySQL存儲和顯示unicode字符串(हिन्दी)



Answers

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


<?php 
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_query('SET character_set_results=utf8');
mysql_query('SET names=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_results=utf8');
mysql_query('SET collation_connection=utf8_general_ci');

mysql_select_db('onlinetest',$con);

$nith = "CREATE TABLE IF NOT EXISTS `TAMIL` (
  `data` varchar(1000) character set utf8 collate utf8_bin default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1";

if (!mysql_query($nith,$con))
{
  die('Error: ' . mysql_error());
}

$nithi = "INSERT INTO `TAMIL` VALUES ('இந்தியா நாட்டின் பக்கங்கள்')";

if (!mysql_query($nithi,$con))
{
  die('Error: ' . mysql_error());
}

$result = mysql_query("SET NAMES utf8");//the main trick
$cmd = "select * from TAMIL";
$result = mysql_query($cmd);
while($myrow = mysql_fetch_row($result))
{
    echo ($myrow[0]);
}
?>
</body>
</html>
Question

我必須將hindi文本存儲在MySQL數據庫中,使用PHP腳本獲取它並將其顯示在網頁上。 我做了以下事情:

我創建了一個數據庫並將其編碼設置為UTF-8,並將其整理為utf8_bin 。 我在表中添加了一個varchar字段,並將其設置為接受charset屬性中的UTF-8文本。

然後我開始向它添加數據。 在這裡,我不得不從現有網站複製數據。 印地文文本如下:सूर्योदय:05:30

我直接將此文本複製到我的數據庫中,並使用PHP代碼echo(utf8_encode($string))來顯示數據。 這樣做後,瀏覽器顯示“??????”。

當我通過瀏覽器中的“查看源”插入UTF等效文本時,सूर्योदय轉換為&#2360;&#2370;&#2352;&#2381;&#2351;&#2379;&#2342;&#2351;

如果我輸入並存儲&#2360;&#2370;&#2352;&#2381;&#2351;&#2379;&#2342;&#2351; 在數據庫中,它完美轉換。

所以我想知道的是我如何直接將सूर्योदय存儲到我的數據庫中並獲取它並使用PHP在我的網頁中顯示它。

此外,任何人都可以幫助我理解,如果有一個腳本,當我輸入सूर्योदय時,給我&#2360;&#2370;&#2352;&#2381;&#2351;&#2379;&#2342;&#2351;

找到解決方案

我寫了以下示例腳本,對我有用。 希望它也可以幫助其他人

<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>

我的數據庫存儲hindi utf字符串的轉儲是

CREATE TABLE `hindi` (
  `data` varchar(1000) character set utf8 collate utf8_bin default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `hindi` VALUES ('सूर्योदय');

現在我的問題是,如果沒有指定“META”或標題信息,它是如何工作的?

謝謝!




CREATE DATABASE hindi_test
CHARACTER SET utf8
COLLATE utf8_unicode_ci;
USE hindi_test;
CREATE TABLE `hindi` (`data` varchar(200) COLLATE utf8_unicode_ci NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `hindi` (`data`) VALUES('कंप्यूटर');





Related