Property Encode UTF-8

julia123

Erfahrenes Mitglied
hi leute ich versuche schon seit längerem auf eine Idee zu kommen mein Projekt vonbegin an auf UTF-8 zu standatisieren.
z.B. ich hab ein Projekt A mit encode utf-8. Jetzt geb ich diese Projket A an einem Freund weiter, der hat Win8 und sobalt er das Projket A auf sein Pc importert übernimmt dieses das encode vom Betriebssystem(Cp...) Das möchte ich aber verändern.

Was ich mich grade so frage wenn ich so ein Projket angucke. Ob man vielleicht in die Datei Projekt.Properties was reinschreiben kann um das vielleicht fest zulegen.

Angeblich soll es software geben? Hab jetzt so nix gefunden.

Hat jemand vielleicht eine Lösung oder ein Tipp? Mehrer Lösungen?
 

sheel

I love Asm
Und was genau soll UTF8 statt OS-abhängiger Sachen werden?

Nein, die Antwort ist nicht "das Programm". Das macht nämlich keinen Sinn.
Das Programm ist weder UTF8 noch sonst irgendwas ähnliches.
 

julia123

Erfahrenes Mitglied
tut mir leid ich hab deine Frage nicht verstanden. Mir geht es nur um die Umlaute das ä auch ein ä anzeigt, egal wem man es weiter gibt. Wahrscheinlich kann man dass gar nicht als Konfiguration festhalten.
vielleicht kann ich mich nicht besser formulieren.
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

wenn ihr beide Eclipse verwendet, dann kannst du das Encoding und Line-Ending Projektspezifisch festlegen. Dies bleibt dann auch beim Import auf einem anderen PC erhalten.

Rechtsklick auf das Projekt -> Properties

Dort kannst du dann unter "Text File Encoding" auf UTF-8 und direkt darunter den "New Textfile Line Delimiter" auf Unix stellen.

Das Ganze funktioniert analog auch für einzelne Dateien in deinem Projekt, zum Beispiel die .properties Dateien sind standardmäßig auch in CP1252 kodiert (*kotz*) und ignorieren die Projekt- oder Globalen Einstellungen.

Grüße,
BK
 

Improof

Erfahrenes Mitglied
Ähm...du meinst in der Windows-Konsole oder?

Ich sags mal so:
Ein richtiges Programm für den End-User sollte keine Konsolenausgaben haben, weil man da ja dann eine grafische Oberfläche hat. Stell dir mal vor, du bist ein User, der keine Ahnung von IT hat und gerade mal ein bisschen im Internet surft und seine E-Mails abruft und dann öffnet sich da bei einem Programmstart plötzlich so ein (und ich sag jetzt bewusst) "böses" und "unheimliches" schwarzes Fenster...die meisten wissen nicht nur nichts damit anzufangen, sondern würden sogar Angst bekommen, dass sie sich geradewegs einen Virus eingefangen haben.

Aus eigener Erfahrung: Ich musste mal bei Bekannten schauen, warum der Netzwerkdrucker plötzlich nicht mehr funktioniert und hab halt als erstes einen einfachen ping auf der Konsole ausgeführt. Routinemäßig "Windowstaste" + "R" gedrückt, "cmd" eingegeben "Enter" und als sich die Konsole öffnet, hör ich wie hinter mir jemand schreit "oh mein gott schau mal was der alles kann!"...obwohl das wohl eine der leichtesten Aufgaben eines ITlers ist ;)

Darum verwendet man die Konsole auch hauptsächlich nur in der Entwicklung z.B. fürs Debugging (Ausgabe von Variablen etc. etc.). Und weil das ja dann für den Entwickler und damit quasi für DICH bestimmt ist, kannst du das auch auf englisch machen, wirst darum nie Probleme mit den deutschen Sonderlauten haben und alle sind glücklich.


Falls du aber dennoch lieber - aus welchem Grund auch immer - deutschsprachige Konsolenausgaben willst, dann darfst du das halt nicht mit der Standardausgabe "System.out.println();" machen, sondern musst dir einen eigenen PrintWriter programmieren, der dir die Ausgaben macht.

Zur Vollständigkeit halber hast du hier ein Codebeispiel, wie das Aussehen kann:
Java:
/* Um deutsche Sonderzeichen ausgeben zu können, müssen Sie ein
* PrintWriter-Objekt erzeugen, das die Zeichentabelle verwendet, die
* vom System für Konsolenfenster eingesetzt wird. Unter Windows ist das
* üblicherweise aus Kompatibilitätsgründen zu DOS-Anwendungen die
* Tabelle 850. Java verlangt für die Erzeugung dieses Objekts, dass Sie
* die Ausnahme UnsupportedEncodingException abfangen, was im Beispiel
* über einen try-catch-block programmiert ist */
PrintWriter out = null;
String codepage = "Cp850";
try
{
   out = new PrintWriter(new OutputStreamWriter(System.out, codepage));

   /* Mit diesem Objekt können Sie nun Daten an der Konsole ausgeben */
   out.println("Test mit deutschen Spezialzeichen: äöü ÄÖÜ ß");
     
   /* Da Sie nun einen Stream verwenden, müssen Sie den Inhalt des
    * Stream über flush ausgeben. Ansonsten erscheint nichts auf
    * der Konsole */
   out.flush();
}
catch (UnsupportedEncodingException e)
{
   /* Fehlerauswertung */
   System.out.println("Erzeugung des Stream fuer die Zeichentabelle " +
      codepage + " nicht möglich: " + e.getMessage());
}
In Eclipse sind die Ausgaben dann zwar kryptisch und falsch, aber auf der Windowskonsole läuft alles wunderbar.

Edit: Quelle für den Code übrigens: http://juergen-bayer.net/buecher/programmierenlernen/artikel/Konsole-IO/Konsole-IO.aspx

Aber nochmals: Produktiv würde ich das nie machen...


Gruß
Daniel
 
Zuletzt bearbeitet: