Unicode als String

Joergel

Mitglied
Moin moin,

bitte helft mir mal auf die Sprünge, ich verstehe folgendes nicht:
Lese ich eine *.txt-Datei, die pro Zeile ein Unicode-Entity enthält, per BufferedReader in einen String und gebe diesen aus, so erhalte ich das Entity ausgegeben. Versuche ich das Entity direkt als String auszugeben, so erhalte ich seinen Zeichen-Wert. Im folgenden Beispiel enthält die Datei test.txt nur den Eintrag '\u00FC' (ohne Anführungszeichen).
Java:
public static void main(String[] args) {
		BufferedReader buff = null;
		String s;

		try {
			buff = new BufferedReader(new FileReader(new File(
					"test.txt")));
			while ((s = buff.readLine()) != null) {
				System.out.println(s);    //\u00FC
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("\u00FC");   //ü
	}

Danke!
 
Hallo,

Du hast die .txt-Datei vermutlich mit einem Text-Editor erzeugt, dieser speichert 6 Unicode-Zeichen: '\', 'u', '0', '0', 'F', 'C'.
Diese werden dann von Java eingelesen und angezeigt, als stünden dort irgentwelche 6 anderen Zeichen, z.B.: 'K', 'a', 'r', 't', 'o', 'n'

Bein 2. Mal steht "\u00FC" IM QUELLCODE, dass heißt es wird kein beliebiger Text erst dynamisch zur Laufzeit eingelesen und verarbeitet, sondern der Comiler hat die möglichkeit das ganze auszutauschen.

Hoffentlich hast du den Unterschied jetzt verstanden,
javaDev2011
 
Bein 2. Mal steht "\u00FC" IM QUELLCODE, dass heißt es wird kein beliebiger Text erst dynamisch zur Laufzeit eingelesen und verarbeitet, sondern der Comiler hat die möglichkeit das ganze auszutauschen.
Hoffentlich hast du den Unterschied jetzt verstanden,
javaDev2011
Nein, noch nicht ganz. In welcher Form, wenn nicht als einzelne Unicode-Zeichen, werden denn die Zeichen des Strings im Quelltext abgelegt? Auch dieser ist doch in einem Texteditor in Form von Einzelzeichen geschrieben worden.
Deine Erklärung würde mir dann einleuchten, wenn das Auslesen der Datei zunächst als CharacterArray erfolgen würde. Dann wäre jedes Einzelzeichen als separates Unicode-Entity repräsentiert. Ist das so gemeint?
 
OK, habe gerade im Quelltext von BufferedReader nachgesehen. Tatsächlich werden die einzelnen Character ausgelesen und zum String zusammengesetzt. Das erklärt's!
 
Ja was soll er denn sonst machen??
Bei manchen Fragen kann man sich einfach nur noch an den Kopf fassen...
 

Zurück
Oben