All this methods shoud work, except in some special circumstances. For example, if you are running a web server locally on a windows machine with php < 5.3.1, only a 'manual' $db->query("SET NAMES 'utf8'"); before your actual query will work.
Any other method trying to use MYSQL_ATTR_INIT_COMMAND will fail.
İşte bu çok sorun ile mücadele, bugün öğrendim:
PDO ifade edemez :: MYSQL_ATTR_INIT_COMMAND bazı ortamlarda (yani maden, özellikle ben bilmiyorum) içinde. Sen explicitely yerine 1002 kullanmak zorunda
Resources.db.params.charset = "utf8: Zend Framework 1.11 (belki 1.8 beri, teyit edilmesi) ile, = sizin config.ini in" İSİMLERİ utf8 SET "database.params.driver_options.1002 ayarlamak gerekmez Zend_Db_Adapter_Pdo_Mysql sizin için bunu yapmak için "yeterli olacaktır.
MYSQL_ATTR_INIT_COMMAND çalışması için pencere üzerinde, php> = 5.3.1 gerekir.
Eğer 5.3.1 veya daha yüksek (ben de 5.3.3 test) ile php sürümü yerine, size php.ini pdo_mysql.default_socket için bir değer ayarlamak emin olmanız gerekir. Varsayılan boş değer (teyit edilecek: Bu konuda bir şeyler okudum ama noktadan yaklaşık 5 bulduktan sonra onsuz denemek için uğraşmadı) çalışmaz
Ayrıca emin pencereler '127 .0.0.1 localhost 'si yapmak gerekir \ system32 \ drivers \ etc \ hosts gizli sistem dosyası (ki php 5.3.0 için bir sorun değildi)
Bütün bu düşünceyle, size kendinizi googling günü kurtarmak ve kılların bazı tutmak gerekir! ;)