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

Langage Java Discussion :

[Java] Conversion d'une chaîne html en unicode


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 110
    Points : 39
    Points
    39
    Par défaut [Java] Conversion d'une chaîne html en unicode
    Bonjour,

    Alors ma question est très précise :
    Je dispose d'une chaîne codée en HTML avec plein de " &# 1055;&# 1086;&# 1076;&# 1086; ..." (espace volontaire après &#) Bref ce sont des notations HTML.
    Je voudrais les convertir en chaîne Unicode avec plein de : "\u00e0\u00e2 ...".
    Je souhaite manipuler dans les 2 cas une String.
    La 1ère contient " &# 1055;&# 1086;&# 1076;&# 1086; ..."
    La conversion me permet d'obtenir une String : "\u00e0\u00e2 ..." résultant de la conversion.

    Comment Faire ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 110
    Points : 39
    Points
    39
    Par défaut
    Je vais vous aider , HA j'ai trouvé ce que je voulais !

    URL : http://people.w3.org/rishida/scripts...conversion.php
    Rentrez le code hexa HTML suivant : &# 1055; (espace volontaire après &#) dans le rectangle de saisi en haut à droite.
    Cliquez sur convertir, et en haut à gauche on voit le character final que je veux !!
    Le code que je cherche à avoir est celui en bas à gauche !! Du javascript en fait ... : \u041F

    Donc comment passer d'une String contenant "&# 1055" à une String contenant "\u041F"

    Merci.

  3. #3
    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,



    En fait dans 1055 == 041F en hexa. Il suffit donc de récupérer 1055 en int et de le caster en char pour obtenir le bon caractère Unicode, ce qui se fait assez simplement via les regexp :

    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
    	public static String convert(String text) {
    		// Pattern qui permet de rechercher les �
    		Pattern pattern = Pattern.compile("&#([0-9]{4});");
    		Matcher matcher = pattern.matcher(text);
     
     
    		if (matcher.find()) {
    			// Si on trouve au moins un élément à remplacer :
    			// On crée un StringBuffer qui contiendra la nouvelle chaine
    			StringBuffer sb = new StringBuffer(text.length());
     
    			// Puis pour chaque élément :
    			do {
    				// On récupère le nombre contenu dans �
    				int number = Integer.parseInt(matcher.group(1));
    				// Et on remplace l'élément trouvé par le caractère correspondant :
    				matcher.appendReplacement(sb, Character.toString((char)number));				
    			} while (matcher.find());
    			// On ajoute la fin de chaine
    			matcher.appendTail(sb);
    			// Et on retourne la chaine ainsi créé
    			return sb.toString();
    		}
    		return text; // Aucun élément à remplacer
    	}
    a++

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 110
    Points : 39
    Points
    39
    Par défaut
    Efectivement je viens juste de remarquer cela !
    Je te remercie beaucoup de l'aide et également l'auteur de la réponse (et du code) que j'ai trouvée sur : http://forum.java.sun.com/thread.jsp...sageID=3888400
    Ca devient un vrai bordel la gestion de la création d'un fichier excel à partir d'un formulaire HTML !! (traitements bas niveau)

    Merci.

Discussions similaires

  1. conversion d'une chaîne hexadécimale en 3 int
    Par loacast dans le forum C++
    Réponses: 2
    Dernier message: 27/02/2007, 15h45
  2. Réponses: 4
    Dernier message: 21/09/2005, 17h35
  3. Réponses: 5
    Dernier message: 21/07/2005, 19h20
  4. Conversion d'une chaîne en tableau d'octets
    Par marsupilami34 dans le forum Langage
    Réponses: 11
    Dernier message: 22/06/2005, 14h44
  5. [datetime] conversion d'une chaîne en une date + heure
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 2
    Dernier message: 07/04/2005, 10h43

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