-
Conversion de caractères
Bonjour,
J'ai le soucis suivant :
Je reçois des données d'un AS400 -> fichier texte tout simple encodé en UTF8 sur système Linux.
Un des champs contient cette valeur : "0000000092R"
Sur l'AS400 la bonne valeur est "-9.29" mais celui-ci la convertie pour donner "0000000092R"
Le champ de destination finale dans la table ou je souhaite importer cette valeur est de type NUMERIC donc forcément "0000000092R" ne rentre pas et provoque une erreur.
Ma base est en UTF8.
J'ai cru comprendre que l'AS400 converti de EBCDIC vers ASCII. Y a t-il un moyen de convertir cette valeur pour retrouver "-9.29" ?
Merci
-
AS 400 utilise une collation et un encodage EBCDIC (voir ceci http://fr.wikipedia.org/wiki/Extende...terchange_Code). Il faut que votre SGBDR supporte la conversion EBCDIC vers la collation cible de votre base. Malheureusement à ma connaissance il n'existe pas de collation EBCDIC pour PostGreSQL. Vous avez alors le choix :
1) changer de SGBDR pour un supportant les collations EBCDIC (IBM DB2 ou SQL Server par exemple).
2) rajouter une phase de conversion du jeu de caractères de vos fichiers.
A +
-
La plupart des moniteurs de transfert proposent cette fonctionnalité
Il faut donc activer la conversion lors du transfert de l'AS400 vers le système linux
-
Changer de SGBDR n'est pas du tout envisageable...
Reste donc à convertir avant l'export. La personne qui s'occupe de cette tâche me dit que c'est possible quand on le fait manuellement depuis son poste avec une appli windows (je n'ai pas le nom) mais dès qu'il s'agit d'automatiser la tâche d'export, la conversion n'est plus possible (toujours d'après la personne en charge de l'AS400).
Donc c'est mal barré pour la récupération de cette info dans un format lisible.
Merci à vous pour les infos.