Herz über Konsole ausgeben

4 Antworten

Das geht nicht!

Zumindest nicht so, dass es überall gleich läuft! Lies dir einfach mal meinen Kommentar in der Antwort von "Mitwirkender" durch.

Dadurch, dass sich die Kodierung der Konsole je nach Betriebssystem, Sprache, Version, Umgebung allgemein ständig ändert, und das Herz als Symbol nur in bestimmten Windows-Codepages vor kommt, werden viele Benutzer deines Programms anstatt eines Herzens einfach nur wirren Zeichensalat zu gesicht bekommen.

Als Workaround könntest du das Herzsymbol aus dem Unicode-Zeichensatz nehmen, da das dann wenigstens Plattform-, Sprach- und Versionsübergreifend standardisiert ist, aber viele Konsolen (wie unter Windows zum Beispiel) unterstützen neuere Unicode-Symbole (noch) nicht, sodass du auch hier Benutzer haben wirst, die anstatt eines Herzchens einen rechteckigen Block sehen werden.

Die letzte und zuverlässigste Möglichkeit wäre (da du ja sowieso Java benutzt) einen JDialog mit einem JTextArea oder einem JEditorPane zu benutzen und dir damit soz. deine eigene Konsole zusammenzubauen. Den Font kannst du direkt aus einer TTF- oder OTF-Datei laden, bei der du weißt, dass sie das Herzsymbol enthält.

Diese Lösung ist relativ leicht binnen ein paar Minuten zu realisieren und das dürfte dann tatsächlich bei 100% der Benutzer funktionieren. (Natürlich eine grafische Oberfäche vorausgesetzt!)

System.out.print((char) 3);

gibt bei mir ein Herz aus.

Grüße - bormolino

Woher ich das weiß:Studium / Ausbildung – B.Sc. Informatik mit FR Software Engineering

Weil es Zeichenkodierung der Konsole nicht unterstützt.

Wo ist das Problem?

0 = 1 = ☺ 2 = ☻ 3 = ♥ 4 = ♦ 5 = ♣ 6 = ♠

Ganz simpel mit dem Code:

for(int i = 0; i <= 6; i++)
   System.out.print(i+" = "+(char) i);
0
@bormolino

Nein, nicht simpel ... du verstehst offensichtlich nicht, was eine Zeichenkodierung ist! :)

Die Tatsache, dass es bei dir auf deinem Rechner funktioniert, ist völlig irrelevant! :)

Portabel wirst du kein Herz ausgeben können ... und mit "portabel" meine ich keinen Unterschied zwischen Linux und Windows, sondern einen zwischen Windows auf Deutsch oder Windows auf Japanisch.

Du wirst sogar Probleme mit älteren und neueren Windows Versionen ein und der selben Sprache bekommen, da die Standard-Codepage eine andere ist! :)

Fazit: Nicht simpel! :)

2

Geht nicht, die "Windowskonsole" haben nur Ascii-Zeichen

Wo ist das Problem?

0 = 1 = ☺ 2 = ☻ 3 = ♥ 4 = ♦ 5 = ♣ 6 = ♠

Ganz simpel mit dem Code:

for(int i = 0; i <= 6; i++)
   System.out.print(i+" = "+(char) i);
0
@bormolino

Wird das in der Konsole wirklich als Herz angezeigt? wäre mir neu :x

0