【问题标题】:How to store the data in unicode in hindi language如何在印地语中以 unicode 存储数据
【发布时间】:2012-09-08 06:55:30
【问题描述】:

我将PHPMySQL 用于应用程序。

问题是:

  1. 如何以MySQLनवीन खेतिहर उपकरण।可读格式或निलेस र पà¥à¤¬格式存储数据

  2. 当用户在文本框中输入数据并点击提交时,我们会得到不同格式的数据。我们需要做的事情是将MySQL转换并存储为可读格式。

【问题讨论】:

标签: php mysql unicode hindi


【解决方案1】:

选择 utf8 字符集和utf8_general_ci 排序规则。

显然,字段(您要存储印地语文本)的排序规则应该是utf8_general_ci

要更改表格字段,请运行

ALTER TABLE `<table_name>` CHANGE `<field_name>` `<field_name>` VARCHAR(100) 
CHARSET utf8 COLLATE utf8_general_ci DEFAULT '' NOT NULL;

连接数据库后,首先运行以下语句

mysql_set_charset('utf8');

例如:

//setting character set
mysql_set_charset('utf8');

//insert Hindi text
mysql_query("INSERT INTO ....");

检索数据

//setting character set
mysql_set_charset('utf8');

//select Hindi text
mysql_query("SELECT * FROM ....");

在浏览器上打印任何 unicode 文本(比如印地语文本)之前,您应该必须通过添加元标记来设置该页面的内容类型

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

例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example Unicode</title>
</head>

<body>
<?php echo $hindiText; ?>
</body>
</html>

更新

mysql_query("SET CHARACTER SET utf8") has changed tomysql_set_charset('utf8'); 这是更改字符集的首选方法。不推荐使用 mysql_query() 来设置(如 SET NAMES utf8)。见http://php.net/manual/en/function.mysql-set-charset.php*

【讨论】:

  • 感谢 raju,我已经设置了所有东西,但我遇到了问题,例如 1) 正确的格式数据应该以可读格式或其他格式存储在 mysql 中,例如:(a) नवीन (b) न िलेस र पà 和第二件事,从输入框中获取文本时,我们以不可复制的格式获取数据,因此如何转换它
  • @nilesh - 您可以以普通格式存储数据(如纯文本)。如果您使用任何第三方应用程序(不支持 unicode)查看数据库中的数据,您可以看到损坏的数据,但实际上它们在 mysql 中是安全的!查看我的更新:您需要在 mysql 端和浏览器端设置字符集。
  • 感谢@raju,我正在使用 mysql 数据库和前端 php,现在当我在文本框中输入“किसानों के लिये एक नवीन उपकरण।”时它以这种格式存储在数据库中“किसानोà¤, के लिये à¤à¤• नवीन उपकरण।” 并且当我在“किसानों के लिये एक नवीनउवीनउपन所以我只想知道是否有任何函数可以直接以可读格式存储“किसानों के लिये एक नवीन उपकरण।
  • 它看起来像正确的 UTF-8,你只需要使用支持这种编码的工具(你似乎使用的是一个限制或默认为 ISO 之类的工具-8859-1)。
  • @nilesh - 实际上,您的数据本身以可读格式存储。 Tripleee 说的完全正确。您用来查看数据的工具可能没有完整的 Unicode 支持。顺便说一句,哪个工具向您显示了文本“किसानोà¤, के लिये à¤à¤ • नवीन उपकरण।" ?
【解决方案2】:

您只需要在桌子上运行以下命令即可。

ALTER TABLE <tablename> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

注意:您应该使用utf8_general_ci 而不是ut8_unicode_ci,因为据说它更快。 What's the difference between utf8_general_ci and utf8_unicode_ci

【讨论】:

    【解决方案3】:

    无需使用字符集更改表。但你的数据库应该是utf8_unicode_ci。

    在连接数据库时只需要添加这一行。" mysqli_set_charset($con, 'utf8')"

        $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
        mysqli_set_charset($con, 'utf8');
        mysqli_query($con, $sql);
    

    【讨论】:

    • 你是对的,它成功了,我在 mysql 中使用了 Storage Engin "myISAM" & Collat​​ion "utfmb4_unicode_520_ci" 并使用了 mysqli_set_charset($con ,'utf8');在我的 php 中。
    【解决方案4】:

    在将 COLLATE 转换为 utf8_general_ci 后使用这一行 mysqli_set_charset($con, 'utf8');在查询下方的 $con 和 mysqli_query() 之间。

    $con= mysqli_connect($host,$user,$pass,$db) or die('无法连接');

    $sql="你的查询..";

    mysqli_set_charset($con, 'utf8');

    $result=mysqli_query($con,$sql);

    【讨论】:

    • 你需要提到具体的方面要小心,在这种情况下,包括编码为 'utf-8' 以获得 unicode。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多