【发布时间】:2010-11-14 23:36:23
【问题描述】:
我必须将印地语文本存储在 MySQL 数据库中,使用 PHP 脚本获取它并将其显示在网页上。我做了以下事情:
我创建了一个数据库并将其编码设置为 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 ('सूर्योदय');
现在我的问题是,如果不指定“META”或标题信息,它是如何工作的?
谢谢!
【问题讨论】:
标签: php mysql unicode utf-8 internationalization