MySQL, benim sorgu UTF-8 karakterleri (sonuçları) dönüştürme aksan sıyırma mı?

2 Cevap php

Ben VARCHAR alanlardan biri aksanlı harf içerebilir DB bazı kayıtlar var. Ben CLI MySQL istemcisi kullanarak aşağıdaki sorgu yaparsanız ben 1 satır doğru olduğunu, geri almak:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%'

Ancak, aynı sorguyu yapmak için bazı PHP (PDO) kullanarak 'em' içeren tüm satırları döndürür, ancak 'Em' içeren bir satır. Daha garip, MySQL sorgusu günlük sorgu 'é' değil, 'e' içerdiğini gösteriyor.

Herhangi bir fikir ne oluyor burada olabilir?

2 Cevap

Bu character set and collation veritabanı, tablo veya sütun bağlıdır. Eğer aynı tabloya karşı sorgu performans?

Eğer sonuçları sonrası olabilir

SHOW CREATE TABLE <yourTable>;

Ayrıca, bir sorgu düzeyde istenen harmanlama belirtebilirsiniz:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%' collate utf8_bin;
-- same as
SELECT site_id, site_name FROM tbl_site WHERE BINARY site_name LIKE '%ém%';

(Note: You should very carefully evaluate the perfomance of such queries)

utf8_general_ci harmanlama harf duyarsız hem and aksan-duyarsız olduğunu.