IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[Encodage]caracteres EBCDIC


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Par défaut [Encodage]caracteres EBCDIC
    Bonjour,
    je dois generer un fichier ASCII qui contient des lignes et qui sera lu par un mainframe IBM (caracteres EBCDIC).
    A la derniere ligne je dois ecrire l'equivalent ASCII (ou decimal ??)
    du caractere EBCDIC "FF".

    Quelqu'un peut me dire comment faire ?
    Existe-t-il une API pour ça ?

    Apparemment 255 est l'equivalent decimal de ce caractere EBCDIC,
    mais ça ne suffit pas pour qu'il puisse être interprete comme le caractere FF par le mainframe IBM.

    Merci pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Ton fichier est soit ASCII ou EBCDIC. Je suppose que tu voulais dire un fichier texte.

    Le caractère ''FF" est-il le caractère de contrôle FormFeed?

  3. #3
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Par défaut
    Oui, un fichier texte .txt (windows XP)


    'FF' est 12 en decimal je pense.
    Enfin d'apres ce tableau de correspondance ASCII-EBCDIC

    12 0C FF Form Feed (FE) FF Form Feed
    http://www.natural-innovations.com/computing/asciiebcdic.html

    Quelqu'un peut-il m'aider ou m'aiguiller ? Merci[/url]

  4. #4
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public static void main(String[] args)
    	throws IOException {
    		final char FF = '\u000C';
     
    		try {
    			String text = "J'ai vu l'homme qui a vu l'ours des Grisons";
    			StringBuffer sb = new StringBuffer(256);
    			sb.append(System.getProperty("user.home"));
    			sb.append(System.getProperty("file.separator"));
    			sb.append("EBDDIC.txt");
     
    			OutputStream out = new FileOutputStream(sb.toString());
    			Writer writer
    			   = new BufferedWriter(new OutputStreamWriter(out, "CP500"));
    			writer.write(text);
    			writer.write(FF);
    			writer.flush();
    			writer.close();
    			out.close();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    Je te laisse le plaisir de code la classe EBCDICWriter.

  5. #5
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public  static void ecrire_fichier_pvc1_derniere_ligne(int compteurLigne, String snumLot, FileWriter f)
    	throws Exception
    	{
    		  logger.info("Debut de methode");		  
    		  String numLotPadde    = null;
    		  String cptLignePadde  = null;		  
    		  String scompteurLigne = String.valueOf(compteurLigne);
     
    		  // Padder à gauche avec des 0
    		  numLotPadde 			= padGaucheChar(snumLot, 5, "0");
    		  cptLignePadde 		= padGaucheChar(scompteurLigne, 9, "0");			  
    		  StringBuffer ligne    = new StringBuffer();
     
    		  for (int i=0; i<891;i++)
    		  {
    			  // High value d'EBCDIC
    			  ligne.append("?");
    		  }
    		  ligne.append("MPG/MAR ").append(numLotPadde).append(cptLignePadde).append("C");
     
    		  try
    		  {
    			  logger.info("Ecriture de la derniere ligne dans le fichier des images");					
    			  f.write(ligne.toString() + NEWLINE );						  			  
    		  }
    		  catch(IOException i)
    		  {
    			  logger.info("Un probleme est arrive lors de l'ecriture de la derniere ligne dans le fichier des images");
    		  }		 
     
    		  logger.info("Fin de methode");
    	}
    Merci,
    mais comment adapter ton code pour mon code, ci-dessus ?
    Je dois ecrire ce caractere EBCDIC 891 fois, à la derniere ligne. J'ai mis un point d'interrogation en attendant de trouver la solution. Les precedentes lignes de mon fichier contiennent les caracteres ASCII habituels (chiffers, lettres etc).
    Je ne veux que la derniere ligne avec un caractere encodable par EBCDIC ( donnera FF).
    De plus, je dois concatener ces caracteres avec d'autres caracteres ASCII.

    Exemple:
    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFTOTOTITI45BLA

    où FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF est une succession de caracters EBCDIC

    Merci pour votre aide

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Par défaut
    Perso, j'ai eu à modifier un fichier AFP, donc en ebcdic, pour un système d'impression, j'avais écrit en byte en sortie directement, en passant simplement par un tableau de byte, quand j'avais à rajouter des données, pour rajouter le code FF, qui correspond en décimal a 255, j'avais fait simplement un new Integer(255).byteValue(), pour récupérer mon byte, que j'avais écrit en sortie, via en write(byte[])

    Si tu fais de la lecture dans un fichier ebcdic, puis de l'ecriture, j'avais eu quelques soucis pour certains characteres qui sortait bizarrement en ASCII, du coup, j'avais tout fait en byte directement...

    J'avoue que j'ai pas lu ton code en detail, mais si ca peut t'aider...

  7. #7
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Par défaut
    Merci quand même.
    Quelqu'un d'autre aurait une solution concrete a mon probleme ?
    J'ai vraiment juste besoin d'afficher 891 fois un seul caractere qui soit encode à la bonne valeur en EBCDIC ...


  8. #8
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Tu remplace ta ligne de code par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne.append('\u000C');

  9. #9
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Par défaut
    merci, j'avais essaye ça mais sous MVS (mainframe IBM) il interprete 00c comme ... 00c ...
    pas d'encodage visible ...
    est-ce la bonne valeur ???

  10. #10
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Par défaut
    String h = "255";
    byte[] b = h.getBytes("Cp500");
    for (int i=0; i<890;i++)
    {
    for(int j=0;j<b.length;j++)
    ligne.append(b[j]);
    }

    J'ai essaye ça et ça me genere ça:
    -14-11-11-14-11-11-14-11-11-14-11-11-14-11

    Sous MVS, le resultat est le meme ...

  11. #11
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par longbeach
    merci, j'avais essaye ça mais sous MVS (mainframe IBM) il interprete 00c comme ... 00c ...
    pas d'encodage visible ...
    est-ce la bonne valeur ???
    Je ne comprends pas. Avec quel programme visualises-tu le contenu du fichier (une éditeur texte, un éditeur héxa)?

    La valeur du caractère de contrôle FormFeed (FF) est 12 (décimal) ou 0x0C (héxadécimal). ceci pour l'EBCDIC et l'ASCII.

    Dec Hex ASCII EBCDIC
    0 00 NUL Null NUL Null
    1 01 SOH Start of Heading (CC) SOH Start of Heading
    2 02 STX Start of Text (CC) STX Start of Text
    3 03 ETX End of Text (CC) ETX End of Text
    4 04 EOT End of Transmission (CC) PF Punch Off
    5 05 ENQ Enquiry (CC) HT Horizontal Tab
    6 06 ACK Acknowledge (CC) LC Lower Case
    7 07 BEL Bell DEL Delete
    8 08 BS Backspace (FE)
    9 09 HT Horizontal Tabulation (FE)
    10 0A LF Line Feed (FE) SMM Start of Manual Message
    11 0B VT Vertical Tabulation (FE) VT Vertical Tab
    12 0C FF Form Feed (FE) FF Form Feed

Discussions similaires

  1. [AJAX] AJAX /JSP encodage caractere
    Par c+cool dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/01/2009, 15h39
  2. problème d'encodage caracteres bizarre
    Par maysa dans le forum Requêtes
    Réponses: 0
    Dernier message: 29/10/2008, 10h06
  3. [XML] xml encodage caractere IE/Firefox
    Par Borowsky dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 07/07/2008, 08h57
  4. probleme encodage caractere
    Par calitom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/07/2008, 14h48
  5. [HttpClient][Encodage] Caractère '?'
    Par nicolas.charlot dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 20/07/2005, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo