2016-10-25 4 views
0

Ich habe einige Daten Hochtöner mit Java verarbeitet. Ich lese sie aus der Datei, mache einen Prozess und drucke auf die stdout.
Der Text in der Datei wie folgt aussieht:Java-Druck-String als Unicode

„RT @ Bollogosta319a: #BuyBookSilentSinners \ u262fGain Verfolger \ n \ u262fRT Diese \ n \ u262fMUST FOLLOW ME I FOLLOW BACK \ n \ u262fFollow jeder, \ n \ rts u262fGain \ n #ANDROID \ u2026 "

Ich lese es ein und drucke es aus, um es auszudrucken. Die Ausgabe soll sein:

„RT @ Bollogosta319a: #BuyBookSilentSinners ☯Gain Verfolger \ n☯RT Diese \ n☯MUST FOLLOW ME I FOLLOW \ BACK n☯Follow jeder, \ n☯Gain \ n rts #Android ... "

Aber meine Ausgabe ist wie folgt:

" RT @ Bollogosta319a:? #BuyBookSilentSinners Follower gewinnen RT diese mich nach mir FOLGE BACK Folgen jeden, der? rts ? Gewinn #ANDROID? "

So scheint es, dass ich zwei Probleme zu bewältigen:
1. Druck die genaue Unicode character statt Unicode string
2. "\n" halten, wie es ist, statt eine neue Zeile in der Ausgabe.

Wie kann ich das tun? (Ich bin wirklich verrückt nach verschiedenen Kodierungen in Java)

+0

was hast du ausprobiert? kannst du posten? –

+0

Wenn Sie Unicode (wie ☯) in Ihrem Ausgangsstrom haben möchten, müssen Sie sicherstellen, dass der Stream UTF8 verwendet. Siehe http://stackoverflow.com/questions/20386335/printing-out-unicode-from-java-code-issue-in-windows-console für wie dies zu tun ist. –

+0

Eigentlich möchte ich mehr über den Codierungsprozess hinter Lesen und Schreiben wissen. Wie es Text aus Datei liest, weiß ich nicht, wie es dargestellt wird. Wenn ich versuche es auszudrucken, wird es als eine andere Kodierungsdarstellung angezeigt .... –

Antwort

0

Ich weiß nicht, wie Sie die Datei analysieren, aber die Methode, die Sie verwenden, scheint Escape-Codes zu interpretieren (wie \n und \u262f). Um Instanzen von \n in der Datei wörtlich zu lassen, können Sie \n durch \\n ersetzen, bevor Sie die Mittel zum Interpretieren der Escape-Codes verwenden. Die \\ wird in eine einzige \ umgewandelt und die n wird in Ruhe gelassen. Haben Sie versucht, eine einfache java.io.FileReader zu verwenden, um die Datei zu lesen? Das mag einfacher sein.

Die Unicode-Symbole können tatsächlich korrekt gelesen werden; Viele Terminals unterstützen nicht den gesamten Bereich von Unicode-Zeichen und drucken ein Symbol anstelle von denen, die es nicht versteht. Vielleicht druckt Ihr Programm und das Terminal weiß einfach nicht, wie es gerendert wird, also druckt es stattdessen ?.

Verwandte Themen