2017-09-13 6 views
-6

-je censé afficher/atleast imprimer des caractères attachés dans une chaîne String str = (attachais) strincapable de montrer les caractères de l'image dans la classe java

System.out.println("Str : "+Str); 

Mais je suis incapable d'imprimer les caractères exacts. J'ai utilisé l'encodage UTF 8 et 16.

Merci à l'avance

+4

Ne pas poser simplement une nouvelle question quand ancien se sont mis-a voté. Essayez d'améliorer l'original: [impossible d'afficher les caractères de l'image dans la classe Java] (https://stackoverflow.com/q/46200918) – Pshemo

+0

Comment pensez-vous que UTF-8 est impliqué? Quelle est la séquence de chaînes ou d'octets avec laquelle vous démarrez? –

+0

@Tom, il a été envoyé à partir de HTML –

Répondre

2

Vous avez ce qu'on appelle un double codage.

Vous avez la séquence de trois caractères "你 好吗" que vous signalez correctement est codée en UTF-8 comme E4BDA0 E5A5BD E59097.

Mais maintenant, commencez à coder chaque octet de cet encodage en UTF-8. Commencez avec E4. Quel est ce codepoint en UTF-8? Essayez-le! C'est C3 A4!

Vous avez l'idée .... :-)

Voici une application Java qui illustre ceci:

public class DoubleEncoding { 
    public static void main(String[] args) throws Exception { 
     byte[] encoding1 = "你好吗".getBytes("UTF-8"); 
     String string1 = new String(encoding1, "ISO8859-1"); 
     for (byte b : encoding1) { 
      System.out.printf("%2x ", b); 
     } 
     System.out.println(); 
     byte[] encoding2 = string1.getBytes("UTF-8"); 
     for (byte b : encoding2) { 
      System.out.printf("%2x ", b); 
     } 
     System.out.println(); 
    } 
} 
+0

Je comprends. Mais je veux que le glyphe de l'image soit imprimé sur la console. –