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?