UTF Problem mit verschiedenen Betriebssystemen

Irgendwie funktioniert mein Java Programm auf Windows anders als auf Linux. Aus irgendeinem Grund verhunzt er mir meine URLs die in kyrillisch geschrieben sind.

Das Programm verbindet sich mit einem Verteiler, greift dort alle weiterführenden Links ab und greift dann auf diese Links zu um sich die Daten zu beschaffen.
Das passiert alles in Java, die Links/URLs werden als Strings in einer ArrayList zwischengespeichert bevor er in der nächsten Schleife die Daten über diese Links abgreift.

Wie lasse ich Windows-Java jetzt in UTF-16 (oder was auch immer kyrillisch mit einschließt) laufen?

Kann man “verhunzt” etwas formalisieren? Mit irgendwelchen Beispielen? Sicher, dass die Links nicht schon “verhunzt” ankommen, weil dort irgendwelche byte[] (nicht char[]) arrays ohne über charsets & Co nachzudenken in Strings gestopft werden?

Ich muss mich Marco anschließen. Wenn Auf Serverseite nur ASCII verwendet wird, kommt auf Clientseite mit UTF-16 nur noch mehr Schrott raus.

  1. Kläre mit was der Server die Strings codiert
  2. Verwende diese Codierung auf Deiner Seite

Auf Serverseite wird mit Windows-1251 codiert.
Da es unter Linux aber ohne Probleme funktioniert… Kann es daran ja eigentlich nicht direkt liegen.

@Marco13
Kein echtes Beispiel, aber im Grunde werden aus einem kyrillischen Buchstaben ein Sonderzeichen und meist ein Fragezeichen. Zumindest wird das mir so angezeigt. Fällt sofort auf dass das falsch ist weil die URLs alle eine feste Länge haben.
Für mich ein Zeichen das es vorher UTF-16 war und dann nach ASCII oder ähnliches konvertiert wurde.
Zumindest wenn mir nicht was komplett anderes angezeigt wird.

Ich versuche morgen mal den Charset zu ändern.

Habe jetzt für jeden I/O im Programm das Charset auf UTF-8 geändert und jetzt geht es.
Ich muss auch sagen das ich davon ausging das sich Client und Server automatisch auf ein Encoding einigen… irgendwie.
Und nicht beide stumm ihr eingeschränktes Local Encoding verwenden.

Gut, Dankeschön.