Base AS400, UTF-8 et PHP

configuration Apache, Zend et PHP , Web services
Répondre
Claude MAROLLEAU
Messages : 4
Enregistré le : ven. 02 mars 2007, 10:01:30

Base AS400, UTF-8 et PHP

Message 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.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

utf8_encode()

Message 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
Christian Massé (Volubis.fr)

Claude MAROLLEAU
Messages : 4
Enregistré le : ven. 02 mars 2007, 10:01:30

(sans texte)

Message 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.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

PHP et UTF-8

Message 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.....
Christian Massé (Volubis.fr)

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

incident ouvert

Message par cmasse »

J'ai ouvert un incident chez Zend, qui reproduit le prb.


du coup ça remonte au second niveau chez eux.


A suivre......
Christian Massé (Volubis.fr)

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

PHP and UTF-8, réponse de Zend

Message 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.
Christian Massé (Volubis.fr)

Claude MAROLLEAU
Messages : 4
Enregistré le : ven. 02 mars 2007, 10:01:30

(sans texte)

Message par Claude MAROLLEAU »

Merci pour vos recherches et actions.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

UTF-8

Message 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.
Christian Massé (Volubis.fr)

Claude MAROLLEAU
Messages : 4
Enregistré le : ven. 02 mars 2007, 10:01:30

(sans texte)

Message par Claude MAROLLEAU »

Entre temps, je suis passé en V7, je vais pouvoir refaire de nouveaux essais.

Merci pour vos recherches.

Répondre