PHP : UTF8 et Crypt
Résolu/Fermé
liloo35
Messages postés
3
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
30 mai 2012
-
30 mai 2012 à 11:27
liloo35 Messages postés 3 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 30 mai 2012 - 30 mai 2012 à 14:50
liloo35 Messages postés 3 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 30 mai 2012 - 30 mai 2012 à 14:50
A voir également:
- PHP : UTF8 et Crypt
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Php if plusieurs conditions ✓ - Forum PHP
- Echo image php ✓ - Forum PHP
- $This php - Forum PHP
4 réponses
Utilisateur anonyme
30 mai 2012 à 14:00
30 mai 2012 à 14:00
Je viens de comprendre.
Je suppose que tu enregistres ta donnée cryptée dans un champ texte en UTF8.
Mais le code qui sort du cryptage n'est PAS de l'UTF8, il ne peut pas être enregistré en UTF8.
En essayant de reproduire ton problème et en affichant le code d'erreur de PDO lors de l'insertion, j'ai eu le message :
Array ( [0] => HY000 [1] => 1366 [2] => Incorrect string value: '\xCAk\xEB\xC6D\x87...' for column '...
Ce qui confirme bien ce que je dis.
Le plus simple est de changer le type du champ en BLOB pour qu'il accepte n'importe quelle donnée binaire.
Ça marcherait dans doute aussi en changeant aussi l'encodage du champ (mais rien que de ce champ) en iso-8859 n'importe quoi, puisque toutes les chaînes sont valides avec ces encodages.
Je suppose que tu enregistres ta donnée cryptée dans un champ texte en UTF8.
Mais le code qui sort du cryptage n'est PAS de l'UTF8, il ne peut pas être enregistré en UTF8.
En essayant de reproduire ton problème et en affichant le code d'erreur de PDO lors de l'insertion, j'ai eu le message :
Array ( [0] => HY000 [1] => 1366 [2] => Incorrect string value: '\xCAk\xEB\xC6D\x87...' for column '...
Ce qui confirme bien ce que je dis.
Le plus simple est de changer le type du champ en BLOB pour qu'il accepte n'importe quelle donnée binaire.
Ça marcherait dans doute aussi en changeant aussi l'encodage du champ (mais rien que de ce champ) en iso-8859 n'importe quoi, puisque toutes les chaînes sont valides avec ces encodages.
liloo35
Messages postés
3
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
30 mai 2012
30 mai 2012 à 12:26
30 mai 2012 à 12:26
J'ai essayer de le mettre dans l'initialisation mais cela ne fonctionne toujours pas :(
Mon initialisation avant modification était :
Et après :
Merci de ton aide.
Mon initialisation avant modification était :
$pdoConnexion = new PDO("".__TYPE.":host=".__HOST.";port=".__PORT.";dbname=".__SID."",__USER,__PASSWORD); $query = $pdoConnexion->prepare("SET NAMES UTF8"); $query->execute(); return $pdoConnexion;
Et après :
$pdoConnexion = new PDO("".__TYPE.":host=".__HOST.";port=".__PORT.";dbname=".__SID."",__USER,__PASSWORD,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
Merci de ton aide.
liloo35
Messages postés
3
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
30 mai 2012
30 mai 2012 à 14:50
30 mai 2012 à 14:50
MERCI BEAUCOUP !!
J'ai modifié le type de mes champs concernés par le cryptage en BLOB et cela fonctionne à merveille.
Encore un grand merci !
J'ai modifié le type de mes champs concernés par le cryptage en BLOB et cela fonctionne à merveille.
Encore un grand merci !
Utilisateur anonyme
30 mai 2012 à 12:05
30 mai 2012 à 12:05
Bonjour
Pour utiliser UTF8 avec PDO, je crois que ça ne marche pas d'utiliser SET NAMES UTF8 dans une requête indépendante. Il faut l'inclure dans l'initialisation :
Pour utiliser UTF8 avec PDO, je crois que ça ne marche pas d'utiliser SET NAMES UTF8 dans une requête indépendante. Il faut l'inclure dans l'initialisation :
$pdoConnexion= new PDO( 'mysql:host=hostname;dbname=defaultDbName', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")