Zend, ccsid et IFS
Posté : ven. 08 janv. 2021, 16:35:46
Bonjour,
je développe actuellement une API Rest en PHP sur Zend (donc hébergé sur l'IBMi) pour rendre accessible des données et des fichiers via HTTP et je rencontre un problème d'encodage.
J'ai actuellement une fonction SQL générant un PDF qui, lorsque je l'appelle me créé un fichier PDF sur l'IFS :
"VALUES createPdf('PARM1', 'PARM2', 'CheminIFSOuDeposerLeFichier')"
Je n'ai aucun problème pour lire ce fichier, il est bien généré lorsque je l'appel depuis STRSQL.
En revanche, lorsque j'appelle la même fonction (donc la même requête SQL) depuis Zend avec db2_exec, le fichier généré n'a pas le même encodage et est illisible.
C'est un problème d'encodage car lorsque je fais un diff entre les deux fichiers, certains caractères passent d'accent à {, ou au petit losange "?". Certains \ sont transformés aussi.
J'ai essayé de convertir le contenu de ce fichier via PHP et les fonctions utf8_encode, utf8_decode, ou encore mb_convert_encoding avec du mb_detect_encoding, mais rien n'y fait.
J'ai vérifié les CCSID de mon profil IBMi, de celui de QUSER et de QTMHHTTP, ainsi que celui dans la configuration de Zend, et tous sont en 297. Pareil pour QCCSID.
Je ne sais plus où chercher.
Avez-vous déjà fait face à ce comportement ?
Merci pour vos retours.
je développe actuellement une API Rest en PHP sur Zend (donc hébergé sur l'IBMi) pour rendre accessible des données et des fichiers via HTTP et je rencontre un problème d'encodage.
J'ai actuellement une fonction SQL générant un PDF qui, lorsque je l'appelle me créé un fichier PDF sur l'IFS :
"VALUES createPdf('PARM1', 'PARM2', 'CheminIFSOuDeposerLeFichier')"
Je n'ai aucun problème pour lire ce fichier, il est bien généré lorsque je l'appel depuis STRSQL.
En revanche, lorsque j'appelle la même fonction (donc la même requête SQL) depuis Zend avec db2_exec, le fichier généré n'a pas le même encodage et est illisible.
C'est un problème d'encodage car lorsque je fais un diff entre les deux fichiers, certains caractères passent d'accent à {, ou au petit losange "?". Certains \ sont transformés aussi.
J'ai essayé de convertir le contenu de ce fichier via PHP et les fonctions utf8_encode, utf8_decode, ou encore mb_convert_encoding avec du mb_detect_encoding, mais rien n'y fait.
J'ai vérifié les CCSID de mon profil IBMi, de celui de QUSER et de QTMHHTTP, ainsi que celui dans la configuration de Zend, et tous sont en 297. Pareil pour QCCSID.
Je ne sais plus où chercher.
Avez-vous déjà fait face à ce comportement ?
Merci pour vos retours.