Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3051 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Résolu] WebService et caractère €

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] WebService et caractère €

n°1680336
brisssou
8-/
Posté le 01-02-2008 à 12:02:58  profilanswer
 

j'ai écrit un webservice qui transfert entre autre, des strings, avec possiblement des caractères €
 
Je fais le dev' sous windows (serveur et client), puis la valid (la prod aussi) sous AIX.
 
en dev (windows client et serveur) => pas de soucis.
 
en valid (client sous windows et serveur sous AIX) => les caractères € deviennent de splendides '?'. Si je me connecte en telnet sur le serveur, je ne peux pas entrer de € dans la console ('?' appairait), pareil en xserver distant à travers cygwin.
 
j'ai la vague impression que c'est un problème de locale sur le serveur. mais ça me gène un peu, j'ai pas trop envie d'être dépendant de la locale du serveur pour échanger des données avec lui. comment faire ?
 
(pour info, la string envoyée est ensuite écrite dans un fichier pour traitement par un programme non java. La strign est également écrite dans un CLOB DB2)
 
edit: résolu.


Message édité par brisssou le 08-02-2008 à 15:25:04

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le 01-02-2008 à 12:02:58  profilanswer
 

n°1680343
masklinn
í dag viðrar vel til loftárása
Posté le 01-02-2008 à 12:14:58  profilanswer
 

C'est pas un problème de locale, c'est un problème d'encodage [:spamafote]

 

AIX utilise un encodage donné par défaut (probablement ISO-8859-1, qui ne comprend même pas le caractère "€" d'ailleurs), ta machine locale utilise un autre encodage par défaut (sûrement Windows-1252, qui ressemble à 8859-1 mais n'est pas strictement identique, et comprend un caractère "€" ) et comme tu t'es pas posé de question, ben ça marche quand tu restes sur la même plateforme (parce que l'encoding est commun au client et au serveur) mais dès que tu parles à un serveur distant ya tout qui pête.

 

Solutions:

Message cité 1 fois
Message édité par masklinn le 01-02-2008 à 12:18:09

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1680346
brisssou
8-/
Posté le 01-02-2008 à 12:17:14  profilanswer
 

j'ai essayé de passer le paramètre axis.xmlEncoding en UTF-16 coté serveur et

Code :
  1. call.setProperty(Call.CHARACTER_SET_ENCODING, "UTF-16" );

coté client.

 

Mais je me prends un spendide

Citation :

java.lang.InternalError: Converter malfunction (UTF-16) -- please submit a bug report via null;"

 

et si c'est de l'encoding, pourquoi ? comment ?

 

(oui, je suis une quenelle en gestion de l'encoding)


Message édité par brisssou le 01-02-2008 à 12:18:26

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1680347
masklinn
í dag viðrar vel til loftárása
Posté le 01-02-2008 à 12:19:50  profilanswer
 

vas lire le lien que j'ai donné.
 
Et les problèmes d'encodage, c'est pas des trucs qu'on règle à coup de bricolage


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1680438
brisssou
8-/
Posté le 01-02-2008 à 14:10:30  profilanswer
 

masklinn a écrit :

C'est pas un problème de locale, c'est un problème d'encodage [:spamafote]
 
AIX utilise un encodage donné par défaut (probablement ISO-8859-1, qui ne comprend même pas le caractère "€" d'ailleurs), ta machine locale utilise un autre encodage par défaut (sûrement Windows-1252, qui ressemble à 8859-1 mais n'est pas strictement identique, et comprend un caractère "€" ) et comme tu t'es pas posé de question, ben ça marche quand tu restes sur la même plateforme (parce que l'encoding est commun au client et au serveur) mais dès que tu parles à un serveur distant ya tout qui pête.
 
Solutions:


sauf que là ça merde aussi l'aix vers aix (j'avais oublié de le préciser). Et c'set ce cas là qui sera la prod.
 
m'enfin je lis le truc sur l'encoding. Tout ce que j'espère, c'est pouvoir écrire une solution qui soit indépendante des plateformes de départ et d'arrivée.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1681753
brisssou
8-/
Posté le 05-02-2008 à 08:39:22  profilanswer
 

bon ok, j'ai enfin fini de lire l'article.
 
donc il faut que je puisse controler l'encoding de se que j'envoie pour être certain de ce que je reçois. Mais comment dans le client lui dire que j'envoie de l'UTF-8 (par exemple), et comment transformer la String...
 
je vais regarder ça de plus près.
 
Sinon, je viens de tomber sur un autre problème sympa. Certain fichiers que je vais devoir faire circuler par le ws contiennent le caractère 0x0C, illégale en XML... Super...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1681757
brisssou
8-/
Posté le 05-02-2008 à 08:57:50  profilanswer
 

hum... en fait, Axis discute en utf-8, par défaut (j'dis une connerie ?).
 
j'en reviens du coup à la locale sur le serveur AIX... est-ce que ça ne serait pas quand j'écris le fichier sur le disque que ça raterait ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1681775
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2008 à 09:25:43  profilanswer
 

brisssou a écrit :

hum... en fait, Axis discute en utf-8, par défaut (j'dis une connerie ?).
 
j'en reviens du coup à la locale sur le serveur AIX... est-ce que ça ne serait pas quand j'écris le fichier sur le disque que ça raterait ?


Probablement. De toute façon, les problèmes d'encodage sont normalement aux interfaces, donc lecture/écriture de fichiers, I/O réseau, ...


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1681795
brisssou
8-/
Posté le 05-02-2008 à 10:04:43  profilanswer
 

et puisque le fichier est lu ensuite par un exécutable AIX, qui doit surement prendre la locale du serveur (j'imagine), puisque le fichier ne précise pas son encodage.
 
bref je crois que je vais aller voir l'admin de la machine, histoire de passer en 8859-15


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1682630
brisssou
8-/
Posté le 06-02-2008 à 12:02:27  profilanswer
 

bon, je reprends, parce qu'en fait, je suis perdu :
j'appelle le webservice depuis une application java, le webservice écrit le fichier sur le disque du serveur, et lu par un programme externe. j'ai donc ça comme chemin de ma string :
 
java test (WAS 6.0 AIX ou WAS 6.0 WINDOWS) --1--> webservice (WAS 6.0  AIX) --2--> filesystem AIX --3--> programme externe
 
en 1, comment gérer l'encodage de la String par Axis (1.2.1) ? j'ai essayé de passer Axis en UTF-16 (qui gère l'€ (?)), mais je prends l'Exception citée plus haut.
 
en 2, comme je n'arrive pas à être certain de l'encodage que je reçois d'Axis, j'ai du mal à décoder pour ensuite ré-encoder en autre chose.
 
en 3, j'ai des exemples de fichiers contenant le caractère € sur le FS de l'AIX qui sont lu correctement. Mais je ne vois pas comment déterminer l'encodage de ces fichiers...
 
bref...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le 06-02-2008 à 12:02:27  profilanswer
 

n°1684012
brisssou
8-/
Posté le 08-02-2008 à 15:23:10  profilanswer
 

bon, c'est plus ou moins résolu.
 
roulement de tambours : c'est un problème d'encoding !!
 
whouaaaaaa, sans déconner !!!
 
précisions : en fait, j'ai une appli de test de mon WS, développée sous windows, avec une chaine en dur. Le fichier source .java est donc encodé par défaut en cp1252.
 
J'envoie tout ça par axis (UTF8->UTF8) vers AIX, où je décode la chaine en byte[] pour l'écrire dans un fichier. getBytes() utilise l'encodage par défaut de la platforme (ici ISO 8859-1).
 
Voilà pourquoi tout était ok, sauf le caractère €, codé différemment dans ces deux encodages.
 
Avec getBytes("windows-1252" ), le fichier créé sur le disque est ok, et utilisé correctement par programme externe.
 
Seulement, suivant ce que mon client m'enverra comme chaine, je ne devrait donc pas décoder de la même façon. Je vais donc devoir lui demander de me passer l'encodage utilisé en paramètre de l'appel du WS.
 
Voilà voilà, 10 jours de recherche et de lecture de doc pour simplement ajouter un paramètre à un appel de fonction sur une String.
 
Mais maintenant je percute un peu mieux les problèmes d'encodage.
 
merci Masklinn.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Résolu] WebService et caractère €

 

Sujets relatifs
[Résolu] Connexion php sur base sql server 2005[Resolu] Compter nombre de page dans un book
[Résolu] Mail ecrit en chinois illisible envoye via un formulaireClassement suivant un total calculé
[Résolu] [PHP][XML][PDF] Comment appeler FOP depuis une page PHP ?Page perso...vous demander un conseil...(resolu)
Recuperer les coordonées d'un point dans un textBox[RESOLU]Probleme avec Formulaire et BD MySQL
[RESOLU] combobox et datatextfield [C#][Résolu] Aide requête SQL: item n'appartenant pas à une catégorie
Plus de sujets relatifs à : [Résolu] WebService et caractère €


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR