Je sais que cette questions à était posé beaucoup de fois, pour avoir suivi les topiques sans résultat.
Voilà pourquoi je vient vers vous posé ma question comment réglé se foutu problème mais données ne son apparemment pas en utf8
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\x8C\x8F8\xA0' for column 'selector'
j'ai donc supprimer ma base pour la récréer en utf8_general_ci puis en utf8_unicode_ci et idem en utf8mb4 puis en latin1 mais rien ne change
et fait la même chose avec la table et le champs idem rien enfin si des fois j'ai une deuxième erreurs
Uncaught PDOException: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '='
j'ai aussi toucher les fichiers de configuration comme dis dans certain topique notamment le fichier my.ini, httpd.h.
voilà cela fait une semaine que j'écume le web a la recherche d'une solution, merci pour vos réponses
ps: j'ai mysql en ligne de commande si sa peux servir.
J'ai recrée quasiment le même environnement que toi et je n'ai aucun problème d'encodage, pas d'erreur MySQL, je récupères bien les hash SSL dans ma table et il les affiche correctement ...
La seule différence c'est la fonction cell_count que je n'ai pas mise car je n'ai pas le code associé ...
Oui en effet, rien d'embêtant dans ta fonction ...
Vérifies l'encodage des fichiers PHP impliqués, avec ton éditeur de texte préféré (style notepad++), pour t'assurer que c'est bien aussi UTF-8, même si je ne vois pas pourquoi cela poserait problème ...
La base, ses tables et leurs colonnes ont une collation normale, PDO est configuré normalement, le fichier HTML a une entête normale ...
J'ai testé chez moi, et cela fonctionne en l'état ...
Je ne vois pas où cela peut merder ... Peut-être que Julp aura une idée, je lui envoie un MP
Déjà, ce devrait être utf8mb4 pour être raccord avec le reste.
Ensuite, à voir si ça vient de là mais openssl_random_pseudo_bytes renvoie des octets quelconques, ce n'est certainement pas de l'UTF-8 ... Il faudrait encoder ça avec bin2hex ou autre base64. Et encore, même sous cette forme, j'aurais utilisé un type binaire (TINYBLOB ou VARBINARY)
> j'ai aussi touché les fichiers de configuration comme dit dans certains topics notamment le fichier my.ini, httpd.h
Modifier httpd.h ne servira strictement à rien, il est utilisé à la compilation pas au runtime. De toute façon, Apache ne joue strictement aucun rôle là-dedans.
> SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\x8C\x8F8\xA0' for column 'selector'
Est parfaitement logique et légitime vu ce que openssl_random_pseudo_bytes génère (pour le selector vu qu'il n'y a ni hachage ou bin2hex/base64 entre son appel et l'insert).
> Pour info je n'avais pas de problème avec un VARCHAR "normal" ... C'est étonnait que les bytes ne soient pas accepté dans ton environnement ...
Au contraire, c'est étonnant que ce soit passé lors de tes tests à vrai dire. A moins d'avoir eu du bol de générer une chaîne +/- valide ? (on peut exclure la connexion pas en utf8, je suppose)
> Uncaught PDOException: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '='
Je comprenais pas cette erreur au départ mais je suppose que ça date de quand il a fait des tests avec du latin1 (après sans l'avoir remis dans son contexte, difficile de lier les choses)
> Pour info je n'avais pas de problème avec un VARCHAR "normal" ... C'est étonnait que les bytes ne soient pas accepté dans ton environnement ..
est ce que la version de php y est pour quelque chose ? Benzouye A tu la même version que moi ?
>> Uncaught PDOException: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '='
Tu as tout a fait raison julp c'était pour les tests
> est ce que la version de php y est pour quelque chose ?
J'en doute. A moins vraiment que libmysql (tonydu76) vs mysqlnd (Benzouye) joue ? Ce qui impliquerait que ce soit la partie cliente qui intervienne, ce qui ne me paraîtrait pas hyper logique de prime abord.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli