2016-06-01 20 views
0
String s1="\u0048\u0065\u006C\u006C\u006F"; // Hello 
String s2="\u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F"; // ಮುಖಪುಟ (Kannada Language) 

System.out.println("s1: " + StringEscapeUtils.unescapeJava(s1)); // s1: Hello 
System.out.println("s2: " + StringEscapeUtils.unescapeJava(s2)); // s2: ?????? 

Wenn ich s1 drucken, erhalte ich das Ergebnis als Hello. Wenn ich s2 drucke, bekomme ich das Ergebnis als ???????.Get Unicode-codierte Zeichen (Kannada lanuguage) aus gegebenem String

Ich möchte den Ausgang als ಮುಖಪುಟ für s2. Wie kann ich das erreichen?

+0

Wo möchten Sie die Ausgabe erhalten: an der Eingabeaufforderung von Windows/Linux oder der Konsolenansicht einer IDE? Bitte erwähnen. –

+0

@SanjeevSaha IDE Konsole .. –

+0

Mögliches Duplikat von [Was ist Zeichenkodierung und warum sollte ich mich damit befassen] (http://stackoverflow.com/questions/10611455/what-is-character-encoding-and-why-should -i-bother-with-it) – Raedwald

Antwort

0
ByteArrayOutputStream os = new ByteArrayOutputStream(); 
PrintStream ps = new PrintStream(os); 
ps.println("\u0048\u0065\u006C\u006C\u006F \u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F"); 
String output = os.toString("UTF8"); 
System.out.println("result: "+output); // Hello ಮುಖಪುಟ 
0

Sie müssen die Codierung wie „UTF-8“ dieses versuchen

String s1="\u0048\u0065\u006C\u006C\u006F"; // Hello 
String s2="\u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F"; // ಮುಖಪುಟ (Kannada Language) 

System.out.println("s1: " + new String(s1.getBytes("UTF-8"), "UTF-8")); 
System.out.println("s2: " + new String(s2.getBytes("UTF-8"), "UTF-8")); 
+0

immer noch gleich. s1 als Hallo und s2 als ?????? –

+0

@SantoshJadi können Sie mir den genauen Code und die Ausgabe zeigen. – Igoranze

+0

noch habe ich nicht die Implementierung gestartet, es ist nur für einen Übungszweck. Ich möchte nur wissen, warum das nicht für andere Sprachen funktioniert. –

0

hinzufügen Wenn Sie Eclipse verwenden, dann haben Sie einen Blick auf: https://decoding.wordpress.com/2010/03/18/eclipse-how-to-change-the-console-output-encoding/

Bitte einfach Ausgabe auf der Konsole als folgt: -

String s1="\u0048\u0065\u006C\u006C\u006F"; 
String s2="\u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F"; 
System.out.println("s1: " + s1); // s1 
System.out.println("s2: " + s2); // s2 

Hoffe, das ist hilfreich für Sie.

+0

Ja, ich habe es versucht, nur für s1 (Englisch), es funktioniert nicht für s2 (Kannada Sprache), die gleiche Ausgabe wie ???????. –

0

Das Problem ist höchstwahrscheinlich, dass System.out nicht bereit ist, mit Unicode umzugehen. Es ist ein Ausgabestrom, der in der sogenannten Standardcodierung codiert wird.

Die Standardcodierung ist am häufigsten (d. H. Unter Windows) ein proprietärer 8-Bit-Zeichensatz, der einfach nicht mit Unicode umgehen kann.

Mein Tipp: Erstellen Sie zu Testzwecken einen eigenen PrintStream oder PrintWriter mit UTF-8-Codierung.

+0

Ja, ich überprüfe mit PrintStream und dessen Druck korrekt. \t PrintStream printStream = neuer PrintStream (System.out, true, "UTF-8"); printStream.println ("\ u0CAE \ u0CC1 \ u0C96 \ u0CAA \ u0CC1 \ u0C9F"); Wie kann ich einem String einen gedruckten Wert zuweisen? –

+0

@Chetan Wie wäre es mit 'String foo =" \ u0CAE \ u0CC1 \ u0C96 \ u0CAA \ u0CC1 \ u0C9F "; – Ingo

+0

es funktioniert mit PrintStream in einer Konsole, aber wenn ich es an den Browser sende, druckt es wie ?????? ?. –