• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Java unsigned Byte 0 - 255

Datschi

Reinette de Champagne
Registriert
08.11.04
Beiträge
415
Hi At'er.

Mein Problem im Zusammenhang mit der Entwicklung eines Transformationstools XML -> uraltes C-Format ist folgendes:

Die Inhalte der XML-Datei können Umlaute enthalten. Das Format, in das ich die Inhalte bringen soll auch. Problem dabei ist, dass im Folgeformat jedes Zeichen nur 1 Byte groß ist.
Also ein unsigned Byte (0 ... 255).
Das kann Java aber nicht. Bin mit meinem Latein am Ende, weil ein Zeichen im Folgeformat nunmal nicht größer als ein Byte sein darf.
Wie stell ich nun also die Umlaute in einem Byte in Java dar?
Quasi nach der (landläufig so bekannten) Ansii-Kodierung.
Also einem Ascii-Zeichen auf 255 erweitert?

Ich hoffe, jemand hat eine Idee...


der Datschi
 
Muß es eine 8Bit Zeichenkodierung sein, oder muß nur der Dateiinhalt 8Bit sein? Andernfalls könnte man UTF-8 nehmen. Sonst mußt Du Dir was einfallen lassen und eine ISO Latin-1 oder ISO Latin-9 Datei schreiben.
 
Ich hab zwar nicht ganz kapiert was Du machen willst, aber Java kann einen signed byte (also im 2er Komplement) sehr wohl als 8-Bit Character interpretieren. Denn die Zahl der darstellbaren Werte ändert sich ja nicht (|-128| + 127 = 255). Kleine Demo mit UTF-8:

Code:
	public static void main(String[] args) {
		String test = "Hallööö welt!";
		byte[] b_arr;
		try {
			b_arr = test.getBytes("UTF-8");
			for (byte b : b_arr)
				System.out.println(b);
			String ergebnis = new String(b_arr, "UTF-8");
			System.out.println(ergebnis);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}