【问题标题】:Matching UTF-8 characters (Turkish) with PHP in MongoDB在 MongoDB 中将 UTF-8 字符(土耳其语)与 PHP 匹配
【发布时间】:2013-08-22 23:54:57
【问题描述】:

我正在使用带有 PHP 驱动程序的 MongoDB,并且正在使用土耳其语字符集。 但是当我尝试匹配土耳其语字符时,出现了问题。

例如,我的数据库包含这些值:

  • 英语
  • 意大利
  • Şampiyona

当我在数据库中搜索它们时没有结果。

$database->find(array('value'=>'İngiltere'));

给我一​​个空的结果,因为它不匹配土耳其语字符并且它不自动匹配。

有什么办法可以解决这个问题?

【问题讨论】:

    标签: mongodb mongodb-php


    【解决方案1】:
    $database->find(array('value'=>'İngiltere'));
    

    MongoDB 类上没有 find() 方法。 $databaseMongoCollection 实例吗?

    您可能在使用 UTF-8 编码时遇到问题(有关相关讨论,请参阅:this answer),但您共享的所有三个字符串似乎都已正确编码。使用 UTF-8 字符串,使用所述值插入和查询应该没有问题。考虑以下代码示例:

    $values = ['İngiltere', 'İtalya', 'Şampiyona'];
    
    $m = new MongoClient();
    $c = $m->test->foo;
    $c->drop();
    
    foreach ($values as $value) {
        printf("Testing value: %s\n", $value);
        printf("Detected encoding: %s\n", mb_detect_encoding($value));
    
        $c->insert(['x' => $value]);
        var_dump($c->findOne(['x' => $value]));
        echo "\n";
    }
    

    这会在我的系统上生成以下输出:

    Testing value: İngiltere
    Detected encoding: UTF-8
    array(2) {
      '_id' =>
      class MongoId#6 (1) {
        public $$id =>
        string(24) "5213d027e84df17727ca7985"
      }
      'x' =>
      string(10) "İngiltere"
    }
    
    Testing value: İtalya
    Detected encoding: UTF-8
    array(2) {
      '_id' =>
      class MongoId#5 (1) {
        public $$id =>
        string(24) "5213d027e84df17727ca7986"
      }
      'x' =>
      string(7) "İtalya"
    }
    
    Testing value: Şampiyona
    Detected encoding: UTF-8
    array(2) {
      '_id' =>
      class MongoId#4 (1) {
        public $$id =>
        string(24) "5213d027e84df17727ca7987"
      }
      'x' =>
      string(10) "Şampiyona"
    }
    

    【讨论】:

    • 我认为我的问题与我的插入有关。我已经尝试过你的代码并且它有效。但以我的价值观,它不起作用。在插入之前我应该​​怎么做才能转换我的值 utf-8?
    • 我正在从这个站点获取我的数据:stats.betradar.com/s4/… 我怎样才能更改这个 utf-8?解决我的问题?谢谢解答
    • 我在上面的回复中链接到stackoverflow.com/a/5920748/162228。这对在 PHP 中将字符串编码为 UTF-8 的各种方法进行了一些讨论。
    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2013-10-02
    • 2015-08-23
    • 2014-04-16
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多