Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertion String en char unicode

    28 avril 2016 à 16:21:55

    Bonjour a tous, pour un projet en informatique j'ai besoin de faire des rotation sur des symbole unicode, j'ai donc un fonction rot sur mais symbole avec une formule au modulo 4 et a la fin j'obtient un String sauf que j'aimerais le convertir en char unicode mais je n'y arrive pas. J'ai déjà essayer .toCharArray mais ca prend que le 'u' de \u25F1 et de cast en char avec (char) ça ne compile pas je demande votre aide.

    Merci d'avance

    Le code:

    public class Patchword {
       
       protected String symbole; //symbole unicode représenter par "\\u25F"
       protected int numR; //nombre de rotation
       
       public Patchword(String sym,int num){
          this.symbole=sym;
          this.numR=num;
       }
       
       public void show (){
          System.out.print(this.symbole);
       }
       
       public String rot (int nbrRot){ //on ajoute le dernier chiffre du symbole unicode avec la formule ci dessous
          int a = ((1 + nbrRot*3)%4) + numR;
          String r = this.symbole + Integer.toString(a);
          return r;
    
       }
    
    }  

    Le test dans le Main:

    public class Main{
       public static void main(String[] args){
          Patchword p1 = new Patchword ("\\u25E",2);
          System.out.println(p1.rot(0));
          System.out.println(p1.rot(1));
          System.out.println(p1.rot(2));
          System.out.println(p1.rot(3));
       }
    }  




    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2016 à 18:15:55

      Tu peux faire quelque chose comme ça pour convertir ta String unicode en caractère:

          public char rot(int nbrRot) {
              int a = ((1 + nbrRot * 3) % 4) + numR;
              final String r = symbole + Integer.toString(a);
              
              return (char) Integer.parseInt(r.substring(2), 16);
          }

      Et pour l'utiliser:

          public static void main(String[] args){
              final Patchword p1 = new Patchword ("\\u25E",2);
              
              for (int i = 0; i < 4; ++i) {
                  System.out.println(p1.rot(i));
              }
          }
      • Partager sur Facebook
      • Partager sur Twitter
      J-1 avant demain
        4 mai 2016 à 15:43:37

        Il n'y a aucune erreur mais il m'affiche des "?" a chaque fois.
        • Partager sur Facebook
        • Partager sur Twitter
          4 mai 2016 à 15:49:18

          et quand je lui donne ce code qui devrait afficher un unicode il m'affiche aussi un "?"

            char c = '\u25E2';
              System.out.println(c);


          EDIT: J'ai vu que c’était un problème avec l'encodage puisqu'il me renvoie bien les bonne chaîne de caractères donc si quelqu'un peux m'aider pour l'encodage en UTF8

          Merci d'avance

          -
          Edité par lilisse005 4 mai 2016 à 16:05:21

          • Partager sur Facebook
          • Partager sur Twitter
            4 mai 2016 à 17:08:41

            Salut,

            Je n'ai pas tou lu, mais est-ce que ce n'est pas juste la méthode "salut".getBytes("UTF-8") que vous cherchez ?

            https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#getBytes%28java.lang.String%29

            -
            Edité par macaque 4 mai 2016 à 17:10:38

            • Partager sur Facebook
            • Partager sur Twitter
              4 mai 2016 à 17:33:23

              En utilisant la réponse de macaque, tu peux créér une String avec l'encoding UTF-8:

                      String s = null;
                      try {
                          s = new String("\u25E2".getBytes("UTF-8"), "UTF-8");
                      }
                      catch (UnsupportedEncodingException e) {
                          e.printStackTrace();
                      }



              • Partager sur Facebook
              • Partager sur Twitter
              J-1 avant demain

              Convertion String en char unicode

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown