• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

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
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
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.
 

nevermind

Bismarckapfel
Registriert
19.12.07
Beiträge
142
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();
		}
	}