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 :

Lecture d'unicode depuis une BD : comment restituer les accents ?


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 22
    Points
    22
    Par défaut Lecture d'unicode depuis une BD : comment restituer les accents ?
    Bonjour à tous,

    Je lis un champ dans une base de données. Ce champ contient de l'unicode car il y a des trucs du genre \uE000 à la place d'un accent.

    Le soucis c'est que je dois afficher le contenu du champ, il faudrait donc que j'arrive à remettre les accents tels qu'ils étaient...

    Comment faut-il procéder svp ? Quelqu'un peut-il me donner une piste ?

    D'avance merci !
    Sandrine

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Le code \u0000 utilise la valeur unicode de la lettre en hexa, donc il suffit de créer un char avec cette valeur pour obtenir le caractère correspondant.


    Dans ce cas précis le plus simple serait d'utiliser les expressions régulières pour rechercher tous les \u0000 pour les remplacer un à un. Lorsqu'on a l'habitude de manipuler les regexp c'est assez simple à faire :

    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
    	public static String decode(String input) {
    		Pattern pattern = Pattern.compile("\\\\u([A-Fa-f0-9]{4})");
    		Matcher matcher = pattern.matcher(input);
     
    		if (matcher.find()) {
    			// Si on trouve au moins un élément on utilise un StringBuffer
    			// pour recréer complètement la chaine de caractère
    			StringBuffer sb = new StringBuffer();
    			do {
    				// Et pour chacun des codes trouvés :
    				// 1. On récupère le nombre en hexa
    				String value = matcher.group(1);
    				// On le convertie en int, puis en char (type compatible)
    				char c = (char) Integer.parseInt(value, 16);
    				// Et on effectue le remplacement dans le StringBuffer :
    				matcher.appendReplacement(sb, Character.toString(c));
     
    			} while (matcher.find());
     
    			// On complète la chaine :
    			matcher.appendTail(sb);
     
    			// Et on retourne la nouvelle chaine :
    			return sb.toString();
    		}
    		// Sinon on retourne la chaine en entrée (aucune modif)
    		return input;
    	}
    a++

Discussions similaires

  1. Problème de lecture fichier local depuis une applet
    Par cyspeo dans le forum Applets
    Réponses: 2
    Dernier message: 15/09/2011, 14h27
  2. Lecture de fichier depuis une appli "launch4j"ifiée
    Par djaize dans le forum Général Java
    Réponses: 1
    Dernier message: 02/11/2009, 10h58
  3. Depuis une shape, comment remonter au stencil ?
    Par DidierC92 dans le forum Visio
    Réponses: 4
    Dernier message: 25/09/2008, 15h10
  4. Réponses: 4
    Dernier message: 30/11/2007, 08h55
  5. Réponses: 9
    Dernier message: 13/06/2005, 17h56

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