Bonjour,
J'ai les soucis suivants :
- Quand je veux créer un fichier dans l'IFS en mode UTF-8 par programme, je dois d'abord le créer dans un fichier temporaire en mode ASCII (1208 ou *PCASCII) puis le copier dans un fichier UTF-8, sinon le programme plante.
- Quand je veux exécuter un script sql en UTF-8, je dois d'abord l'ouvrir sous Notepad++ et copier son contenu dans ACS sinon les caractères accentués sont mal interprétés.
Est-ce qu'à votre avis il me manquerait quelque chose sur l'IBM i, ce qui m'empêcherait de passer de l'UTF-8 à l'EBCDIC et inversement sans passer par un intermédiaire ?
Merci d'avance pour vos idées et vos réponses,
Et bonne journée !
Daniel.
Problème de passage d'UTF-8 vers EBCDIC et réciproquement
Re: Problème de passage d'UTF-8 vers EBCDIC et réciproquement
Bonjour Daniel,
Bienvenu sur le forum !
Le CCSID 1208 est UTF-8 sur l'IBM i.
Pour la création d'un fichier IFS par programme, cela dépend comment le fichier est créé (la commande touch possède une option -C pour indiquer le ccsid par exemple, API système, autre ...). Si aucun CCSID ne peut être indiqué il y'a un CCSID par défaut (cf le répertoire, le protocole ...). Donc beaucoup de combinaisons qui produisent des résultats différents.
Pour l'exécution de script SQL avec ACS il n'y a pas de souci, il gère nativement le CCSID si le fichier est sur l'IBM i (fichier source ou IFS), et travaille en UTF-8 côté windows. S'il y'a des soucis, cela provient souvent d'un attribut de CCSID sur le fichier (côté IBM i donc) qui n'est pas correct par rapport au contenu du fichier. On retombe sur le premier point certainement.
Si vous avez du détail sur comment est créé le fichier ?
Bienvenu sur le forum !
Le CCSID 1208 est UTF-8 sur l'IBM i.
Pour la création d'un fichier IFS par programme, cela dépend comment le fichier est créé (la commande touch possède une option -C pour indiquer le ccsid par exemple, API système, autre ...). Si aucun CCSID ne peut être indiqué il y'a un CCSID par défaut (cf le répertoire, le protocole ...). Donc beaucoup de combinaisons qui produisent des résultats différents.
Pour l'exécution de script SQL avec ACS il n'y a pas de souci, il gère nativement le CCSID si le fichier est sur l'IBM i (fichier source ou IFS), et travaille en UTF-8 côté windows. S'il y'a des soucis, cela provient souvent d'un attribut de CCSID sur le fichier (côté IBM i donc) qui n'est pas correct par rapport au contenu du fichier. On retombe sur le premier point certainement.
Si vous avez du détail sur comment est créé le fichier ?
Nathanaël
Re: Problème de passage d'UTF-8 vers EBCDIC et réciproquement
Bonjour Nathanaël,
et merci de vous pencher sur ce cas.
Effectivement petite erreur, j'aurai dû parler de 1252 et *PCASCII.
Pour le script SQL, il est créé par le bloc-notes sous windows 11.
Vous savez tout !
Merci encore,
Daniel.
et merci de vous pencher sur ce cas.
Effectivement petite erreur, j'aurai dû parler de 1252 et *PCASCII.
Pour le script SQL, il est créé par le bloc-notes sous windows 11.
Vous savez tout !
Merci encore,
Daniel.
Re: Problème de passage d'UTF-8 vers EBCDIC et réciproquement
Pour le cas du script SQL, à priori voici le souci :
- le bloc note enregistre en UTF-8
- ACS attend un fichier UTF-8 avec BOM
Par exemple, dans un bloc note :
Ouverture du fichier dans ACS :
Si vous prenez un bloc-note plus évolué (style notepad++) et vous demandez l'enregistrement UTF-8 BOM, l'ouverture dans ACS fonctionne.
Dans le monde windows/linux, la notion de CCSID n'existe pas, ce n'est pas un attribut du fichier. Aussi chaque outil est libre d'enregistrer ou d'interpréter comme il le souhaite. Le BOM est un suite d'octets en début de fichier permettant d'indiquer l'encodage réel des données à suivre.
Wikipedia BOM : https://fr.wikipedia.org/wiki/Indicateu ... des_octets
Pour la première question du fichier créé par programme, je n'ai pas d'info pour vous en dire plus
- le bloc note enregistre en UTF-8
- ACS attend un fichier UTF-8 avec BOM
Par exemple, dans un bloc note :
Code : Tout sélectionner
select * from sqlsample.employee ;
values ('azerty &é"(-èç@Ê€') ;Code : Tout sélectionner
select * from sqlsample.employee ;
values ('azerty &é"(-èç@Ê€') ;Dans le monde windows/linux, la notion de CCSID n'existe pas, ce n'est pas un attribut du fichier. Aussi chaque outil est libre d'enregistrer ou d'interpréter comme il le souhaite. Le BOM est un suite d'octets en début de fichier permettant d'indiquer l'encodage réel des données à suivre.
Wikipedia BOM : https://fr.wikipedia.org/wiki/Indicateu ... des_octets
Pour la première question du fichier créé par programme, je n'ai pas d'info pour vous en dire plus
Nathanaël