Page 1 sur 1

Base AS400, UTF-8 et PHP

Posté : lun. 19 sept. 2011, 14:44:19
par Claude MAROLLEAU
Bonjour,

Je souhaite sauvegarder dans un fichier AS400, des chaines de caractère au format UTF-8. Le but est d'afficher un site web traduit en français, polonais, grec, ... J'attaque la base avec PHP et ZendCore, l'AS400 est en version V5R4M0.

Dans mon fichier, la zone concernée est définie de la manière suivante :
A DTRLIB 100A COLHDG('LIBELLE TRADUCTION')
A CCSID(1208)

J'ai tenté les fonctions utf8_encode et utf8_decode de PHP, mais cela ne fonctionne pas. Cela ne fonctionne pas non plus sans ces fonctions. J'ai aussi essayé de laisser le fichier sans le CCSID à 1208, puis avec et sans les fonctions utf8 de PHP.

Je ne sais pas où est mon problème (côté AS400, PHP ou les deux). Pouvez vous éclairer ma lanterne ?

Merci.

utf8_encode()

Posté : mar. 20 sept. 2011, 17:11:40
par cmasse
La fonction utf8_encode convertit du ISO-8859-1 (alphabet occidental) en UTF8, cela suppose une saisie en Français par exemple. est-ce le cas ?

sinon il faut modifier Apache avec AddDefaultCharset , voir le tutoriel http://electron-libre.fassnet.net/utf8.php


je ferais qq test, dès que j'ai un peu de temps...


Christian

(sans texte)

Posté : jeu. 22 sept. 2011, 09:27:03
par Claude MAROLLEAU
Les pages HTML ou PHP ont toutes l'entête qui va bien pour préciser l'utilisation d'UTF-8.

Dans ma saisie, je vais avoir principalement du Français, de l'Anglais et du Polonais.

Merci d'avance pour vos futurs tests.

PHP et UTF-8

Posté : mar. 04 oct. 2011, 14:57:52
par cmasse
J'ai créé une base de test en UTF-8 que j'ai renseigné avec Web Access avec des données occidentales, du thaï, du chinois et du grec (copier/coller depuis le web, je ne parle ces différentes langues que sous la torture)

ensuite j'ai ajouté un entête dans ma page php

Code : Tout sélectionner

 <?php                                             
 header&#40;'Content-Type&#58; text/html; charset=utf-8'&#41;; 
 ?>
enfin j'ai modifié ma connexion ODBC avec l'attribut SQL_ATTR_UTF8 que je viens de trouver dans la doc.

Code : Tout sélectionner

 // connexion à l'AS/400                      
 $link = odbc_connect&#40;"AS400", "", ""&#41;;  
 odbc_setoption&#40;$link, 1, SQL_ATTR_UTF8, SQL_TRUE&#41;;  
les données occidentales sont clairement affichées, les autres non, hors sous Web Access (Java) je vois toutes les données correctement.


je continue de chercher.....

incident ouvert

Posté : mar. 11 oct. 2011, 18:38:47
par cmasse
J'ai ouvert un incident chez Zend, qui reproduit le prb.


du coup ça remonte au second niveau chez eux.


A suivre......

PHP and UTF-8, réponse de Zend

Posté : jeu. 20 oct. 2011, 14:55:14
par cmasse
mauvaise nouvelle, réponse de Zend :
Hello Christian,

Have not managed to get the db2 or odbc extensions to present the data correctly, so at this stage you will need to open a PMR with IBM, as the extension owned by IBM.
je vais donc ouvrir un incident chez IBM.

(sans texte)

Posté : jeu. 20 oct. 2011, 15:23:24
par Claude MAROLLEAU
Merci pour vos recherches et actions.

UTF-8

Posté : mar. 21 août 2012, 15:37:39
par cmasse
Je viens de refaire un test avec les derniers correctifs de la version 7.

Ca marche avec :

SetEnv="CCSID=1208" dans le fichier fastcgi.conf
(à la place de SetEnv="CCSID=819")


et une connexion réalisée comme ceci :

Code : Tout sélectionner

 $link = odbc_connect&#40;$_GET&#91;'rdb'&#93;, "unprofil", "motdepasse"&#41;;
 odbc_setoption&#40;$link, 1, SQL_ATTR_UTF8, 1&#41;;   
Si vous ne mettez pas profil et mot de passe, ça ne marche pas et vous recevrez
AUTHORIZATION ERROR: REFER TO PTF 5761SS1 SI29733 FOR MORE INFORMATION.
Echec d'autorisation lors de tentative de connexion à base de données répartie. (SQ30082)
suite à une modification effectuée par IBM sur les routines CLI et non encore intégrée par ZEND.

(sans texte)

Posté : jeu. 23 août 2012, 07:54:50
par Claude MAROLLEAU
Entre temps, je suis passé en V7, je vais pouvoir refaire de nouveaux essais.

Merci pour vos recherches.