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

API standards et tierces Java Discussion :

Pas de code équivalente à l'ebcdic AS400


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Par défaut Pas de code équivalente à l'ebcdic AS400
    Bonjour,

    J'ai besoin de trier des données telles que le fait une base DB2400 d'un AS400. Or ce tri est différent du tir habituel en java parce que le codage des caractères est différent (ebcdic). Ce qui fait que l'ordre alphabétique est <caractères spéciaux &,$,...> <lettres> <chiffres> au lieu de <caractères spéciaux &,$,...> <chiffres> <lettres>.
    Pour pouvoir trier convenablement, je dois pouvoir comparer deux String selon cette règle. Pour ce faire, j'ai trouvé une méthode consistant à comparer les tableaux de bytes récupérer avec getBytes(String charsetName) ou charsetName est la page de code correspondant à mon codage AS400.
    Connaissez-vous donc la page de code correspondant à un ebcdic sur AS400 ? Ou bien connaissez-vous une page de code qui donnerait un ordre équivalent ?

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    le charset Cp1047 semble correspondre à ce que tu cherches:

    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
    33
    34
    35
    36
    37
    public static int compare(byte[] left, byte[] right) {
    	    for (int i = 0, j = 0; i < left.length && j < right.length; i++, j++) {
    	        int a = (left[i] & 0xff);
    	        int b = (right[j] & 0xff);
    	        if (a != b) {
    	            return a - b;
    	        }
    	    }
    	    return left.length - right.length;
    	}
     
    	public static void main(String[] args) {
    		try {
    			String s1 = "1a";
    			String s2 = "a1";
     
    			byte[] ebc1 = s1.getBytes( "Cp1047" );
    			byte[] ebc2 = s2.getBytes( "Cp1047" );
     
    			if (compare(ebc1, ebc2) > 0) {
    				System.out.println("Ordre: s2, s1");
    			} else {
    				System.out.println("Ordre: s1, s2");
    			}
     
    			ebc1 = s1.getBytes( "UTF-8" );
    			ebc2 = s2.getBytes( "UTF-8" );
     
    			if (compare(ebc1, ebc2) > 0) {
    				System.out.println("Ordre: s2, s1");
    			} else {
    				System.out.println("Ordre: s1, s2");
    			}
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		}
    	}
    j'obtiens
    Ordre: s2, s1
    Ordre: s1, s2

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Par défaut
    OK, je ne savais pas que le tableau de bytes pouvais renvoyer des négatifs qu'il faut corriger... par exemple les string "&" et "H" donnent comme tableau de bytes [80] et [-56]. Or il fallait comprendre [200]...
    Merci pour l'astuce.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Blend beta 1][VS Extension WPF CTP 11/06] VS ne lit pas le code généré par Blend
    Par FRED.G dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/12/2006, 17h50
  2. Je ne comprend pas le code source de ce programme
    Par elmodeno dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/10/2006, 12h16
  3. Problème de fenêtre modal qui ne stoppe pas le code en arrière plan
    Par Sebcaen dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/09/2006, 13h43
  4. Pas de code retour which ?
    Par in dans le forum Linux
    Réponses: 6
    Dernier message: 10/05/2006, 13h36
  5. Réponses: 3
    Dernier message: 29/03/2006, 09h59

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