Cześć, dopadł mnie problem z kodowaniem znaków. Używam pewnego protokołu do komunikacji z zewnętrznym urządzeniem po UDP. Celem wyszukania urządzeń w lokalnej sieci wysyłam pakiet o o treści <AK-NORD><PING> na adres rozgłoszeniowy sieci. Ponieważ socket używa tego samego portu, na którym nasłuchują urządzenia również odbiera ten komunikat. Te wysłane przez siebie samego komunikaty odfiltrowuję prostym ifem, inne przetwarzam, kod wygląda w przybliżeniu tak:

for (InterfaceAddress ia : validAddresses) {
	socket = new DatagramSocket(54321, ia.getAddress());
	String request = "<AK-NORD><PING>";
	packet = new DatagramPacket(request.getBytes(), request
			.getBytes().length, ia.getBroadcast(), 54321);
	socket.send(packet);

	socket.setSoTimeout(4000);
	byte[] buffer = new byte[1500];
	while (true) {
		packet = new DatagramPacket(buffer, buffer.length);
		try {
			socket.receive(packet);
		} catch (SocketTimeoutException e) {
			break;
		}
		if (new String(packet.getData(), 0, packet
				.getLength()).equals("<AK-NORD><PING>")) {
			continue;
		}
		// kod przetwarzający dane z otrzymanego pakietu
	}
}

I wszystko działało pięknie na wszystkich maszynach, na których było sprawdzane. Az do momentu sprawdzenia na komputerze z niemieckim windowsem (o ile to ma znaczenie). Tam, jako odpowiedź dostaję <AËNORD><PING>. Próbowałem kodować tego Stringa do tablicy bajtów i odkodowywać z użyciem różnych kodowań ale nie udało mi się odtworzyć tego efektu. Łącznik pomiędzy K i N to znak o kodzie 0x2D (dywiz).
Jakieś pomysły?