ASCII Herzen schreiben

Alle kennen es, alle lieben es. Das ASCII-Herz. Gemeint ist damit dieses Herzchen-Symbol: ♥. Das Witzige ist aber, dass das Herz gar nicht in den 128 Zeichen der ASCII-Zeichentabelle vorkommt, sondern Zeichen Nummer 9829 im Unicode ist. In frühen Jahren hat man das aber in Internetforen falsch aufgeschnappt und die Herzen mit ASCII-Arts in Verbindung gebracht, weshalb noch immer viele nach dem Begriff „ASCII Herz“ suchen.

Möchte man das Herz in einem HTML-Dokument mit UTF-8 Kodierung darstellen, so gibt es zwei Wege dafür. Einmal als Hex-Code: &#x2665 und einmal als Dezimal-Code: &#9829.

Unter Windows kann man das Herz übrigens durch gleichzeitiges Drücken der Alt-Taste zusammen mit der Zahl 3 (auf dem Num-Block) einfügen. Ein weiterer Weg führt über die Windows Zeichentabelle (Start -> Ausführen -> charmap.exe):

ASCII-Code in Unicode (UTF-8) mit Java umwandeln

Gegeben ist folgende ASCII-Codierung:

%7b%22email%22%3a%22bn%40bennyn.de%22%2c%22name%22%3a%22Benny%20Neugebauer%22%7d

Wie wir wissen, stellt der ASCII-Code genau 1 Byte (8 Bit) dar. Dazu wird eine Sequenz in der Form %xy angegeben, wobei „xy“ eine zweistellige Hexadezimal-Zahl ist, welche die 8-Bit repräsentiert. Ein Blick in die ASCII-Tabelle zeigt uns folgende Kodierung:

%20 = blank (Leerzeichen)
%22 = "
%3a = :
%40 = @
%2c = ,
%7b = {
%7d = }

Demnach müsste für unser Beispiel der entsprechende Unicode (UTF-8) so aussehen:

{"email":"bn@bennyn.de","name":"Benny Neugebauer"}

In Java lässt sich ASCII-Code in Unicode ganz leicht umwandeln:

1
2
3
String ascii = "%7b%22email%22%3a%22bn%40bennyn.de%22%2c%22name%22%3a%22Benny%20Neugebauer%22%7d";
String unicode = URLDecoder.decode(ascii, "UTF-8");
System.out.println(unicode);

Umlaute und Sonderzeichen in Java

Wer schon mal in Java Programme mit Textausgabe programmiert hat, wird feststellen, dass es trotz der Betriebssystemunabhängigkeit von Java Probleme mit der Darstellung von Sonderzeichen auf verschiedenen Betriebssystemen gibt. Daher sollte man Umlaute und Sonderzeichen immer durch Unicode-Escapes im Quellcode ersetzten. Java arbeitet mit 16-Bit Unicodes (UTF-16).

Beispiel:

System.out.println(„\u00C4sthetisches Fr\u00FChst\u00FCcksfernsehen.“);

Übersicht der wichtigsten Unicode-Maskierungen für Java:

Unicode-Escapes Sonderzeichen
\u00A1 ¡
\u00A2 ¢
\u00A3 £
\u00A4 ¤
\u00A5 ¥
\u00A6 ¦
\u00A7 §
\u00A8 ¨
\u00A9 ©
\u00AA ª
\u00AB «
\u00AC ¬
\u00AD ­
\u00AE ®
\u00AF ¯
\u00B0 °
\u00B1 ±
\u00B2 ²
\u00B3 ³
\u00B4 ´
\u00B5 µ
\u00B6
\u00B7 ·
\u00B8 ¸
\u00B9 ¹
\u00BA º
\u00BB »
\u00BC ¼
\u00BD ½
\u00BE ¾
\u00BF ¿
\u00C0 À
\u00C1 Á
\u00C2 Â
\u00C3 Ã
\u00C4 Ä
\u00C5 Å
\u00C6 Æ
\u00C7 Ç
\u00C8 È
\u00C9 É
\u00CA Ê
\u00CB Ë
\u00CC Ì
\u00CD Í
\u00CE Î
\u00CF Ï
\u00D0 Ð
\u00D1 Ñ
\u00D2 Ò
\u00D3 Ó
\u00D4 Ô
\u00D5 Õ
\u00D6 Ö
\u00D7 ×
\u00D8 Ø
\u00D9 Ù
\u00DA Ú
\u00DB Û
\u00DC Ü
\u00DD Ý
\u00DE Þ
\u00DF ß
\u00E0 à
\u00E1 á
\u00E2 â
\u00E3 ã
\u00E4 ä
\u00E5 å
\u00E6 æ
\u00E7 ç
\u00E8 è
\u00E9 é
\u00EA ê
\u00EB ë
\u00EC ì
\u00ED í
\u00EE î
\u00EF ï
\u00F0 ð
\u00F1 ñ
\u00F2 ò
\u00F3 ó
\u00F4 ô
\u00F5 õ
\u00F6 ö
\u00F7 ÷
\u00F8 ø
\u00F9 ù
\u00FA ú
\u00FB û
\u00FC ü
\u00FD ý
\u00FE þ
\u00FF ÿ

Hinweis: Die Unicodes können unter Windows XP auch mit der Zeichentabelle (zu erreichen über Start -> Ausführen -> charmap) gefunden werden.