ODBC et caractères spéciaux

configuration Apache, Zend et PHP , Web services
Répondre
little_noland
Messages : 9
Enregistré le : lun. 10 déc. 2012, 10:27:16

ODBC et caractères spéciaux

Message par little_noland »

Bonjour,

Nous utilisons le connecteur ODBC linux vers l'IBMI, pour des applications web en PHP avec un serveur web Aapche externe. Nous avons également des applications qui fonctionnent avec Zend et nous n'avons pas ce problème.

Avec le driver ODBC, nous avons des problèmes au moment de l'insert ou de l'update,

Un petit exemple tout simple, ma table a un champ de taille 30 en alpha, si on essaye d'insérer depuis le PHP "MON TEXTE QUI ARRIVE A LA FIN°", l'insert va planter car le degré va prendre deux places au lieu de une. (Le CCSID de la table est en 297)

Voici le paramétrage que nous utilisons pour se connecter en ODBC depuis PHP :

new PDO("odbc:DRIVER={IBM i Access ODBC Driver};System=IP_IBMI;PORT=50000;DATABASE=XXXXX;PROTOCOL=TCPIP;UID=USER;PWD=PASSWORD;CCSID=1208;DEBUG=524286;", "", "");


Quelqu'un a t'il déjà rencontrer le problème ?

Vous en remerciant.

Hurri
Messages : 21
Enregistré le : lun. 02 nov. 2020, 16:04:59

Re: ODBC et caractères spéciaux

Message par Hurri »

Bonjour,
A moins que je fasse une grosse erreur, tu as indiqué un CCSID 1208, soit de l'UTF-8.
Le caractère ° sera donc écrit sur 2 octets.

little_noland
Messages : 9
Enregistré le : lun. 10 déc. 2012, 10:27:16

Re: ODBC et caractères spéciaux

Message par little_noland »

Bonjour,
Merci pour votre réponse,
Il faudrait que je mette quoi comme CCSID pour que cela reste compatible avec l'UTF-8 en mode web ?

Merci

Hurri
Messages : 21
Enregistré le : lun. 02 nov. 2020, 16:04:59

Re: ODBC et caractères spéciaux

Message par Hurri »

Pour moi le CCSID par défaut est très bien, c'est le système qui fera la conversion.

L'idéal serait que les tables utilisent toutes l'UTF-8. Mais bon, on sait que ce n'est pas souvent possible.
Si en PHP on a des problèmes de conversion, il faut traiter les champs avec UTF8_encode et UTF8_decode.

Répondre