|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : octobre 2006 Messages : 111 ![]() |
Bonjour,
Je rencontre un souci et je ne comprend pas ce qui se passe. Nous avons un fichier saisi via une interface Web (serveur Zend et Php), et il est "bien entendu" défini avec des zones en CCSID 1208 (UTF-8). Nous avons besoin d'afficher le contenu d'une de ces zones de texte sur certains écrans verts. Et là, surprise. Tous les caractères se convertissent bien, sauf ... le caractère euro. Pourtant les sessions sont bien en CCSID 1147, et la conversion devrait donc bien se passer, mais non. J'ai revérifié (et recompilé) le fichier écran, il a un QCHRID de 695 1147. Rien à faire. Bizarrement ce fichier a aussi un CCSID... Qui lui est 297, ce qui expliquerai tout, mais je ne trouve pas comment le changer/définir. Une idée ? |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Fais ce test pour voir :
Sous iSeries Navigator tu fais : Code :
Ensuite côté écran vert, requête la même table sous STRSQL. Si tu ne vois pas le €, fais un CHGJOB en 1147 et réessaye. Résultat ? |
||
|
|
10
|
|
|
#3 | ||
|
Membre régulier
![]() Inscription : octobre 2006 Messages : 111 ![]() |
Bonjour,
Cà fonctionne bien... Mais les champs et la table sont en CCSID 1208. Et c'est là que je ne comprends pas. Ma table existante utilisée en production sur plusieurs sites, créée de la même manière, a bien des champs en CCSID 1208, mais la table elle même est en 297 ! Et c'est çà qui semble poser problème donc. Etrange... Voilà la définition de création de la table pour info si tu y vois quelque chose : Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : octobre 2006 Messages : 111 ![]() |
Tu m'as donné une idée en fait. Et j'ai sorti le caractère "euro" en hex... Et là surprise, je ne l'ai pas avec la même valeur.
Avec ton test j'obtiens : E282AC Avec ma valeur fichier j'obtiens : C280 Et forcément çà cloche. Ce que je ne comprends pas c'est comment j'arrive à stocker cette valeur. Je ne me suis jamais aperçu de rien, le programme de saisie (interface Web), affichant bien l'euro. Il y a donc une conversion en entrée et sortie (programmes utilisant CGIDEV2) que je n'ai pas repérée, il faut que je trouve où. |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : octobre 2006 Messages : 111 ![]() |
Voilà c'est fixé.
Mon serveur Web n'avait pas la directive DefaultNetCCSID définie, et par conséquent récupérais des données dans la valeur du client par défaut soit 819. Je l'ai passé à DefaultNetCCSID=1208 et là tout fonctionne. Reste à reconvertir les anciennes données qui sont incorrectes, et çà c'est une autre paire de manche, je ne sais pas trop encore comment je vais faire. Merci pour m'avoir donné l'idée de regarder la valeur hex, j'aurais pu tourner en rond encore longtemps. |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Content que tu es pu résoudre ton problème.
Généralement, une simple requête SQL suffit pour remplacer des caractères dans une colonne. Si tu veux un coup de main, n'hésite pas. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com