【问题标题】:How to get unicode value of a Bengali character in php如何在php中获取孟加拉语字符的unicode值
【发布时间】:2016-05-24 09:09:38
【问题描述】:

我发誓这不是重复的,因为我根本没有从这些问题和答案中找到我的答案。

我正在做一个项目,我应该知道 孟加拉语字符的 unicode 值。孟加拉语字符“”的 unicode 值为 '0x0995 >'。

我在网上找到了很多功能,但不幸的是它们不适用于孟加拉语。可能是因为孟加拉语是多字节语言。

php(user-defined or built-in) 里面有没有函数,比如

somefunction(ক);

它将提供值 0995

[在您建议我之前,请测试您的代码是否提供字符 ক 是否提供十六进制 0995 或等效项,]

谢谢。

【问题讨论】:

  • echo json_encode('ক');
  • 多字节语言是什么意思?那么有没有单字节的语言?如果是这样,你到底会如何使用单字节语言?
  • @roullie : 谢谢它正在工作......但是 "\u0995" 如何删除这些双引号和 \u 。
  • @Shadowfax 也许英语是单字节语言,因为它适合 ASCII。我说多字节是因为我在网上找到了一个函数,这给我一个错误的说法..没什么严重的。你对我的问题有什么特别的回答吗?

标签: php unicode character-encoding special-characters


【解决方案1】:

对于 PHPuniord 可以正确处理基本多语言平面之外的字符:

function uniord($s) {
    return unpack('V', iconv('UTF-8', 'UCS-4LE', $s))[1];
}

【讨论】:

    【解决方案2】:

    从 PHP 7 开始,您可以使用来自 intl 扩展的内置类 IntlChar

    var_dump(IntlChar::chr('ক')); # => int(2453)
    

    只需添加一个十进制以从十进制转换为十六进制,或者,对于自定义格式,(s)printf(例如:U+%08X)。

    【讨论】:

      【解决方案3】:
                     function uniord($u) {
                          $k = mb_convert_encoding($u, 'UCS-2LE', 'UTF-8');
                          $k1 = ord(substr($k, 0, 1));
                          $k2 = ord(substr($k, 1, 1));
                          return $k2 * 256 + $k1;
                      }
                      echo uniord('ক');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 2019-03-28
        • 2019-09-23
        • 1970-01-01
        • 2015-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多