Bonjour,
j'ai un petit soucis de caractères spéciaux (accentués et autres) :
J'ai créé un module SQLRPGLE qui invoque une URl grâce à HttpGetClob.
Cela fonctionne, je récupère bien le flux XML voulu en retour.
Cependant les caractères accentués ne sont pas correctement restitués.
J'ai essayé plusieurs "charset" dans le header passé à HttpGetClob (UTF-8, iso-8859-1...) sans aucun succès.
Quand l'url est invoquée directement dans un navigateur, les caractères du flux XML sont bien affichés en retour.
Je butte sur ce petit problème et ne sais comment le résoudre simplement.
Quelqu'un aurait-il une solution ?
Merci pour votre aide.
HttpGetClob
-
- Messages : 21
- Enregistré le : ven. 22 juil. 2016, 13:54:28
Merci pour la piste mais hélas il est bien à 297.
Grâce à d'autres sujets sur ce forum j'avais vérifié ce point.
Je sèche...
Le flux XML est bien encodé en utf-8 :
....5...10...15...20...25...30...35...40...45...50...55...60
1 '<?xml version="1.0" encoding="UTF-8"?><rechercheDistributeur'
Au lieu de :
181 '0210</id><libelle>distrib_test_à é</libelle><code>0123456</'
je devrais avoir :
181 '0210</id><libelle>distrib_test_àè</libelle><code>0123456</'
Grâce à d'autres sujets sur ce forum j'avais vérifié ce point.
Je sèche...
Le flux XML est bien encodé en utf-8 :
....5...10...15...20...25...30...35...40...45...50...55...60
1 '<?xml version="1.0" encoding="UTF-8"?><rechercheDistributeur'
Au lieu de :
181 '0210</id><libelle>distrib_test_à é</libelle><code>0123456</'
je devrais avoir :
181 '0210</id><libelle>distrib_test_àè</libelle><code>0123456</'
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
le site data.nantes.fr fournit des informations sous forme de web services
cette URL retourne des équipements publics avec des adresses contenant des caractères accentués. http://data.nantes.fr/api/publication/2 ... format=xml
son entête indique aussi un encodage l'UTF-8
ce code SQL fonctionne chez moi et affiche bien les caractères accentués ("Usine d'incinération..." en ligne 3, par exemple)
cette URL retourne des équipements publics avec des adresses contenant des caractères accentués. http://data.nantes.fr/api/publication/2 ... format=xml
son entête indique aussi un encodage l'UTF-8
ce code SQL fonctionne chez moi et affiche bien les caractères accentués ("Usine d'incinération..." en ligne 3, par exemple)
Code : Tout sélectionner
Select * from
XMLTABLE('$r/document/data/element' PASSING
XMLPARSE(DOCUMENT
systools.httpgetClob('http://data.nantes.fr/api/publication/24440040400129_NM_NM_00025/LOC_EQUIPUB_VIE_PRATIQUE_NM_STBL/content/?format=xml' ,'')
) as "r"
COLUMNS
nom char(50) PATH'geo/name'
) as xml;
Christian Massé (Volubis.fr)
-
- Messages : 21
- Enregistré le : ven. 22 juil. 2016, 13:54:28
Je n'arrive pas à utiliser votre url d'exemple, je me demande si je n'ai pas un problème avec HttpGetClob (ancienne version ou autre...) :
> values systools.httpgetclob('http://data.nantes.fr/api/publication/2 ... L/content/', '')
Etat SQL : 38000
Code fournisseur : -4302
Message : [SQL4302] Abandon de la proc. stockée ou fonction UDF Java SYSTOOLS.HTTPGETCLOB, nom spécifique HTTPGETCLOBNONXML. Exception : com.ibm.db2.rest.HttpUDFException. Cause . . . . . : La procédure stockée Java ou la fonction UDF a été abandonnée et a généré une exception Java. Si la trace du composant SQJAVA est activée, elle contient une trace de pile Java relative à la méthode abandonnée. Que faire . . . : Déboguez la méthode Java pour supprimer l'exception.
L'instruction mise en évidence a échoué, entraînant l'interruption du traitement
> values systools.httpgetclob('http://data.nantes.fr/api/publication/2 ... L/content/', '')
Etat SQL : 38000
Code fournisseur : -4302
Message : [SQL4302] Abandon de la proc. stockée ou fonction UDF Java SYSTOOLS.HTTPGETCLOB, nom spécifique HTTPGETCLOBNONXML. Exception : com.ibm.db2.rest.HttpUDFException. Cause . . . . . : La procédure stockée Java ou la fonction UDF a été abandonnée et a généré une exception Java. Si la trace du composant SQJAVA est activée, elle contient une trace de pile Java relative à la méthode abandonnée. Que faire . . . : Déboguez la méthode Java pour supprimer l'exception.
L'instruction mise en évidence a échoué, entraînant l'interruption du traitement
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
CPF503E
Dans la log vous devez avoir aussi un CPF503E
PS : Votre partition IBM i a accès à Internet ?
Code : Tout sélectionner
Le code d'erreur correspondant est 1. Lea signification des codes d'erreur est fournie ci-après.
1 -- Le programme externe ou le programme de service a renvoyé SQLSTATE 38000. Le message renvoyé par le programme est : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PS : Votre partition IBM i a accès à Internet ?
Christian Massé (Volubis.fr)
-
- Messages : 21
- Enregistré le : ven. 22 juil. 2016, 13:54:28
Effectivement :
1 -- Le programme externe ou le programme de service a renvoyé SQLSTATE 38000. Le message renvoyé par le programme est :
SYSTOOLS.HTTPGETBLOBHTTPGETBLOBNONXMLcom.ibm.db2.rest.HttpUDFException.
Nos AS400 ne doivent pas avoir accès à internet. Je viens d'essayer avec une autre adresse (www.ldlc.com) et j'ai le même résultat.
Avec des adresses internes à l'entreprise j'ai bien une réponse.
Tant pis pour l'exemple externe.
1 -- Le programme externe ou le programme de service a renvoyé SQLSTATE 38000. Le message renvoyé par le programme est :
SYSTOOLS.HTTPGETBLOBHTTPGETBLOBNONXMLcom.ibm.db2.rest.HttpUDFException.
Nos AS400 ne doivent pas avoir accès à internet. Je viens d'essayer avec une autre adresse (www.ldlc.com) et j'ai le même résultat.
Avec des adresses internes à l'entreprise j'ai bien une réponse.
Tant pis pour l'exemple externe.