Je reçois le message d'erreur: « séquence d'octets non valide pour le codage « UTF8 »: 0x9fPostgreSQL: Se connecter requête uniquement en cas d'erreur
Ok, maintenant je sais quelque part mon application php tente d'interroger en utilisant ce caractère 0x9f . mais je ne sais pas où.
J'ai vérifié postgresql.conf mais je ne trouve pas quelque chose comme « log_on_error ». Il est seulement le paramètre log_statement qui provoque postgres à enregistrer toutes les sélections ou seulement toutes les requêtes. mais que Je voudrais voir est-ce:
ERROR: "Invalid byte sequence for encoding "UTF8": 0x9f
QUERY: SELECT * FROM blabla WHERE field1='blabla0x9f'
Dans ce cas, je serais en mesure de voir quelle requête a causé cela. Donc, je sais dans quel script php à vérifier.
Est-ce possible avec postgres? Ma version de psql est 8.3.9.
Ok, mais comment cela se fait? Toutes mes pages sont en utf-8 (en utilisant charset = utf-8 dans la tête html). Ma base de données est en UTF-8. Alors, comment cela peut-il arriver? Savez-vous quel caractère est cette chose 0x9f? – NovumCoder
Les pages ne sont très clairement pas * traitées * en UTF-8. Probablement votre environnement PHP n'est pas défini pour UTF8. Je ne suis pas un expert PHP, donc je ne sais pas exactement comment régler ça. Peut-être default_charset est ce que vous cherchez à définir dans votre config PHP? –
cette chose '0x9f' est un octet avec la valeur hexadécimale 9f (= 159). Êtes-vous sûr que votre requête ne dit pas '\ 0x9f', cette barre oblique inverse est importante. la cause est probablement quelqu'un à la recherche de vulnérabilités d'injection SQL dans votre site. – Jasen