为了账号安全,请及时绑定邮箱和手机立即绑定

使用PHP和MySQL存储和显示Unicode字符串(हिन्दी)

使用PHP和MySQL存储和显示Unicode字符串(हिन्दी)

浮云间 2019-12-21 11:15:36
我必须将印地文文本存储在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>我存储印地语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”或标题信息,它如何工作?
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-12-21
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

对于那些正在寻找PHP(> 5.3.5)PDO语句的人,我们可以按照以下方式设置字符集:


$dbh = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 767 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信