当前位置: 首页 > 面试题库 >

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

栾英资
2023-03-14
问题内容

我必须将印地文文本存储在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 ('सूर्योदय');

现在我的问题是,如果不指定“ META”或标题信息,它如何工作?

谢谢!


问题答案:

您是否在HTML Head部分中设置了正确的字符集?

<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与mysql设置utf8

PHP / MySQL编码问题

因此,我想知道的是如何将सूर्directly直接存储到数据库中,并使用PHP将其提取并显示在我的网页中。

我不确定“直接存储在数据库中”是什么意思。.您是指使用PhpMyAdmin或任何其他类似工具输入数据吗?如果是,我已经尝试使用PhpMyAdmin输入unicode数据,所以对我来说效果很好-
您可以尝试使用phpmyadmin输入数据,然后使用php脚本进行检索以进行确认。如果您需要通过Php脚本提交数据,则只需在创建mysql连接时,执行插入查询之前以及选择数据时设置名称和字符集即可。看看以上文章以查找语法。希望能帮助到你。

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



 类似资料:
  • 本文向大家介绍使用PHP显示动态突出显示的字符串,包括了使用PHP显示动态突出显示的字符串的使用技巧和注意事项,需要的朋友参考一下 该功能可能用途有限,但可以在您的标题中创建一些整洁的效果。它的工作原理是使用空格将字符串分成几小段,然后将其重新放回两部分。第一部分是正常的,但是第二部分将被包裹在span元素中。通过使用此功能,您可以通过将前半部分的样式与后半部分的样式不同来在标题中创建有趣的效果。

  • 问题内容: 这个问题看起来很尴尬,但我一直找不到答案。 与下面的C#代码行等效的PHP是什么? 此示例创建一个带有单个Unicode字符的字符串,该字符串的“ Unicode数值”为十六进制的1000(十进制的4096)。 也就是说,在PHP中,如何创建一个具有“ Unicode数值”已知的Unicode字符的字符串? 问题答案: 因为JSON直接支持语法,所以我想到的第一件事是: 另一种选择是使

  • 问题内容: 这个问题是一个相当开放的问题。我已经将MS SQLServer的存储过程与经典的ASP和ASP.net一起使用了一段时间,并且非常喜欢它们。 我正在从事一个小型的业余项目,由于各种原因,LAMP路线已经消失。在MySQL和PHP5中使用存储过程有任何提示/技巧/陷阱或良好的起点吗?我的MySQL版本支持存储过程。 问题答案: 算了,它比PDO难用得多,应该已经删除了。的确,它引入了对m

  • 我正在尝试使用raylib显示包含西里尔字符的字符串。所以我加载了一个代码点如下的字体: 如果我画

  • 问题内容: 我有一些json,我需要解码,更改然后编码,而不会弄乱任何字符。 如果我在json字符串中包含unicode字符,它将无法解码。我不知道为什么,因为json.org说一个字符串可以包含:。但这在python中也不起作用。 我可以使用utf8_encode,该字符串将允许使用json_decode对字符串进行解码,但是字符会被压缩成其他形式。这是来自结果数组的print_r的结果。两个字