2013-08-20 2 views
1

PHP 드라이버와 함께 MongoDB를 사용하고 있으며 터키어 문자 집합을 사용하고 있습니다. 그러나 터키 문자와 일치 시키려고하면 문제가 발생합니다.MongoDB에서 PHP와 UTF-8 문자 (터키어) 일치시키기

예를 들어, 내 데이터베이스는 이러한 값을 포함

  • İngiltere
  • İtalya을
  • Şampiyona

내가 어떤 결과가 없습니다 데이터베이스를 검색 할 수 있습니다.

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

터키어와 일치하지 않으며 자동으로 일치하지 않으므로 결과가 비어 있습니다.

이 문제를 해결하기 위해 수행 할 수있는 작업은 무엇입니까?

답변

0
$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" 
} 
+0

내가 내 문제는 내 삽입에 대해 생각합니다. 나는 당신의 코드를 시험해 보았고 효과가 있었다. 하지만 내 가치와 함께, 그것은 작동하지 않습니다. 삽입 전에 utf-8 값을 변환하려면 어떻게해야합니까? – user2396307

+0

나는이 사이트에서 나의 데이터를 얻고있다 : http://www.stats.betradar.com/s4/gismo.php?&html=1&id=1828&language=tr&clientid=35&child=1&childnodeid=1819 어떻게이 유토피아를 바꿀 수 있는가? -8? 내 문제를 해결하기 위해? 대답은 – user2396307

+0

에 대한 위의 내 대답은 http://stackoverflow.com/a/5920748/162228에 링크 된. PHP에서 문자열을 UTF-8로 인코딩하는 다양한 방법에 대한 논의가 있습니다. – jmikola