【问题标题】:Storing utf8 data`मेरा भारत महान` in database在数据库中存储 utf8 数据`मेरा भारत महान`
【发布时间】:2011-11-25 10:07:10
【问题描述】:

我想将 UTF8 存储在数据库中。我有 Unicode 印地语中的数据,我想在将其转换为 HTML 字符集后使用 php 将其存储在 MySQL 数据库中。假设有人在文本框中输入了一个项目符号 (•) 字符。保存该数据时,是否应将其转换为•

假设我有数据 मेरा भारत महान 我想通过将其转换为 html 字符将其存储在数据库中。我怎样才能做到这一点?我尝试使用 htmlentities 功能,但这对我来说效果并不理想。

【问题讨论】:

  • 为什么要转实体?只使用 UTF-8 有什么问题?
  • 请定义“不满意”。也附议一下,UTF-8 有什么问题?
  • मेरा भारत महान 存储在数据库中我想将其转换为这种格式•
  • @Rahul 但是为什么?这根本没有任何意义。是什么问题导致你这样做?这听起来像是一个非常愚蠢的想法。

标签: php mysql


【解决方案1】:

• 事物被称为 HTML 实体。在 PHP 中有一个函数可以创建这些:mb_encode_numericentityDocs,它是 Multibyte String 扩展 (Demo) 的一部分:

$string = 'मेरा भारत महान';
$encoding = 'UTF-8';

$convmap = array(0, 0xffff, 0, 0xffff);
$encoded = mb_encode_numericentity($string, $convmap, $encoding);

echo $encoded; मेरा भारत महान

但是:您需要知道字符串的编码。在这种情况下我选择了UTF-8,根据它你需要修改函数的$encoding参数和$convmap数组。

但是,不要以这种方式将其存储到您的数据库中。按原样存储并转换输出编码您从数据库中检索数据之后。

类似问题:Convert (doublebyte) string to Hex

【讨论】:

  • 还值得一提的是,这样做通常可能是一个非常愚蠢的想法。 (我的意思不是你的答案,这很好,但是将多字节字符转换为 HTML 实体的想法——我敢打赌,OP 存在字符集问题,应该在其核心中解决)
  • 是的,我添加了一条注释,即文本不应与 HTML 实体一起存储到数据库中。那是一种编码太多了。
  • @pekka:我没有这样的问题,即使我在数据库中查看我的数据,而不是条形码...
  • @Rahul 那你为什么要这样做?
  • @pekka:只是为了了解我怎样才能完成任务.....:D hakre:这个 conmap 定义了什么?请解释一下是字符范围吗?
【解决方案2】:

htmlentities有charset参数,试试:htmlentities($text, ENT_COMPAT, "UTF-8")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多