Toutes ces méthodes SHOUD travail, sauf dans certaines spéciales conditions. Par exemple, si vous exécutez un serveur Web localement sur une machine Windows avec php < 5.3.1, seulement une requête 'manual' $ db-> ("SET NAMES 'utf8'"); avant que votre requête réelle ne fonctionne. Toute autre méthode essayant d'utiliser MYSQL_ATTR_INIT_COMMAND échouera.
Voici ce que j'ai appris aujourd'hui, aux prises avec ce problème très:
Vous ne pouvez pas se référer à PDO :: MYSQL_ATTR_INIT_COMMAND dans certains environnements (à savoir le mien, en particulier, je ne sais pas).Vous devez utiliser explicitement 1002 à la place
Avec Zend Framework 1.11 (peut-être depuis 1.8, à confirmer), vous n'avez pas besoin de définir database.params.driver_options.1002 = "SET NAMES utf8" dans votre configuration. ini: resources.db.params.charset = "utf8" sera suffisant pour que Zend_Db_Adapter_Pdo_Mysql le fasse pour vous.
Sous Windows, vous avez besoin de php> = 5.3.1 pour que MYSQL_ATTR_INIT_COMMAND fonctionne.
Si vous remplacez votre version de php avec 5.3.1 ou supérieur (j'ai également testé 5.3.3), vous devez vous assurer que vous définissez une valeur à pdo_mysql.default_socket dans votre php.ini. La valeur vide par défaut ne fonctionnera pas (à confirmer: j'ai lu quelque chose à ce sujet mais je n'ai pas essayé de le faire après avoir découvert le point 5)
Vous devez également vous assurer d'avoir '127.0. 0,1 localhost » dans vos windows \ system32 \ drivers \ etc \ hosts fichier système caché (qui n'a pas été un problème pour php 5.3.0)
Avec tout cela à l'esprit, vous devriez être en mesure d'économiser de vous-même un jour de googling et gardez certains de vos cheveux! :)
:-) Mon google foo est mieux, trouvé ceci avant de poster, aurait dû le dire. Je vais affiner ma question, j'essaie de le faire dans le config.ini et non dans le code php. –
Qu'est-ce qui se passe avec la barre oblique s'échappant dans cette constante? – Kzqai
Oui, la question demande comment configurer utf8. Mais je pense que vous devriez envisager d'utiliser utf8mb4 pour supporter les jeux de caractères utf8 complets si vous utilisez mysql. Si vous utilisez utf8, vous pouvez perdre des données en fonction de la configuration de votre mysql. – dminer