2016-07-02 22 views
0

Bitte beachten Sie, dass this Frage kein Duplikat ist.Java konvertiert String in Unicode-Zeichen. "U + 1F600" =

Ich habe einen String wie folgt aus:

// My String 
String myString = "U+1F600"; 
// A method to convert the String to a real character 
String unicodeCharacter = convertStringToUnicode(myString); 
// Then this should print: 
System.out.println(unicodeCharacter); 

Wie kann ich diesen String auf den Unicode-Zeichen konvertieren ? Ich möchte das dann in einer TextView zeigen.

+1

Sie wirklich Sie wollen die Zeichenfolgen dynamisch konvertieren oder wollen Sie konstante Zeichenfolgen für diese Zeichen? – Henry

+0

@Henry Wie in der Frage möchte ich die Zeichenfolge in das richtige Unicode-Zeichen konvertieren. Beispiel: "String s =" U + 1F600 ";" sollte zu "String s2 =" ";". Dann möchte ich dieses Emoji in einem TextView anzeigen. Bitte siehe Bearbeiten. –

+0

Zuerst konvertieren Sie den Unicode-Codepunkt in UTF-16 und codieren das als ein Java-String-Literal, d. H. "String myString =" \ uD83D \ uDE00 ";". Dann drucken Sie es mit einer Schriftart, die das Emoji hat. – Andreas

Antwort

3

Was Sie versuchen zu tun, die Unicode zu drucken, wenn Sie den Code kennen, sondern als String ... der normale Weg, dies zu tun, ist mit der Methode

Character.toChars(int)

wie:

System.out.print(Character.toChars(0x1f600)); 

jetzt in Ihnen Fall haben Sie

String myString = "U+1F600"; 

so können Sie die Zeichenfolge Entfernen der ersten 2 Zeichen, gestutzt und dann als eine ganze Zahl mit dem Verfahren der Rest Parsen Integer.parseInt(valAsString, radix)

Beispiel:

String myString = "U+1F600"; 
System.out.print(Character.toChars(Integer.parseInt(myString.substring(2), 16))); 
+0

Danke für die Antwort. Wie bereits in der Frage erwähnt, ist es jedoch schon ein String wie dieser: 'String myString =" U + 1F600 "'; –

+0

ist jetzt aktualisiert .... werfen Sie einen Blick und lassen Sie es mich wissen –

+0

Danke, es funktioniert jetzt. –

1

Versuchen

yourTextVIew.setText(new String(Character.toChars(0x1F60B))); 
+0

Danke für die Antwort. Wie bereits in der Frage erwähnt, ist es jedoch schon ein String wie dieser: 'String myString =" U + 1F600 ";'. –

+0

Zeigen Sie nicht nur das Codefragment an. Geben Sie auch ein bisschen Erklärung. – Andreas

+2

@SuperThomasLab Dann tue 'String UnicodeCharacter = neue Zeichenfolge (Character.toChars (Integer.parseInt (myString.substring (2), 16)))'. – Andreas