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

2019-06-17 18:34发布

我要印地文文本存储在MySQL数据库中,使用PHP脚本读取它,并在网页上显示它。 我做了以下内容:

我创建了一个数据库,并将其编码为UTF-8,并且还到核对utf8_bin 。 我在表中增加了一个varchar字段并将其设置为接受的charset属性UTF-8文本。

然后,我开始添加数据。 在这里,我不得不将数据从复制现有的网站 。 在印地文的文字是这样的:सूर्योदय: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 ('सूर्योदय');

现在的问题是,它是怎么不指定“元”或头信息工作?

谢谢!

Answer 1:

您是否设置正确的字符集的HTML头部分?

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

或者你可以使用你的PHP脚本设置内容类型 -

   header( 'Content-Type: text/html; charset=utf-8' ); 

目前已经有一些讨论在这里StackOverflow上 - 请看看

如何使MySQL处理UTF-8正确 通过PHP设置UTF8与MySQL

与编码问题的PHP / MySQL

所以我想知道的是我怎么能直接存储सूर्योदय到我的数据库并获取它,并使用PHP在我的网页上显示。

我不知道你所说的“直接在数据库中存储”的意思..你的意思是进入使用phpMyAdmin或任何其他类似工具的数据吗? 如果是的话,我用phpMyAdmin来输入Unicode数据都试过了,所以它一直对我很好 - 你可以尝试使用phpmyadmin的输入数据,并使用PHP脚本来确认恢复。 如果需要通过刚才设置的名称和字符集,当您创建MySQL连接的PHP脚本提交数据,之前执行插入查询,当您选择数据。 看看上面的帖子找到语法。 希望能帮助到你。

**更新**只是修正了一些错别字等



Answer 2:

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


Answer 3:

对于那些谁正在寻找PHP(> 5.3.5)PDO语句中,我们可以设置字符集为每如下:

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


Answer 4:

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('कंप्यूटर');


文章来源: Storing and displaying unicode string (हिन्दी) using PHP and MySQL