Unicode-Konverter
Unicode-Konverter
Konvertiere zwischen Unicode-Zeichen, Codepoints (U+XXXX), UTF-8, UTF-16, HTML-Entities und Dezimal/Hex. Mit Live-Vorschau und Emoji-Referenz.
Datenschutz-Garantie: Alle Umrechnungen erfolgen zu 100% lokal in deinem Browser. Es werden keine Daten an Server gesendet. Perfekt für Entwickler, Webdesigner und Sprach-Enthusiasten.
Inhaltsverzeichnis
Schnellübersicht
- Unicode-Konverter: Zeichen ↔ Codepoint ↔ UTF-8/16 ↔ HTML
- 3 Modi: Zeichen-zu-Code, Code-zu-Zeichen, Text-zu-Code
- Emoji-Referenz: Beliebte Emojis mit Codepoints
- Live-Vorschau: Sofortige Umrechnung
- Copy: Jedes Format per Klick kopieren
- Theorie: Was ist Unicode? (Anfängerfreundlich)
- Geschichte: Von ASCII zu UTF-8
- FAQ: Häufige Fragen zu Unicode und UTF-8
1. Unicode-Konverter
Wähle einen Modus – die Umrechnung erfolgt sofort.
- Unicode enthält über 149.000 Zeichen aus 160+ Schriftsystemen.
- Der Codepoint U+1F600 ist das Emoji 😀 (Grinning Face).
- Emojis belegen oft 2 Codepoints (Surrogate Pair) und 4 Bytes in UTF-8.
- Die ersten 128 Unicode-Zeichen sind identisch mit ASCII – das macht UTF-8 abwärtskompatibel.
- UTF-8 ist mit über 97% aller Websites die meistgenutzte Kodierung im Web.
2. Emoji-Referenz (beliebte Emojis)
Klick auf ein Emoji, um seinen Codepoint zu sehen.
3. Theorie – Unicode einfach erklärt
Verstehe die Grundlagen von Unicode und Zeichenkodierung – ohne Vorkenntnisse.
Was ist Unicode?
Unicode ist ein universeller Zeichensatz: Jedem Zeichen der Welt wird eine eindeutige Nummer (Codepoint) zugewiesen.
- Format: U+XXXX (hexadezimal)
- Umfang: Über 149.000 Zeichen
- Ziel: Alle Sprachen und Symbole
Warum braucht man Unicode?
Vor Unicode gab es hunderte verschiedene Kodierungen:
- Kompatibilität: Ein Zeichensatz für alle
- Vollständigkeit: Alle Sprachen möglich
- Emojis: Symbole und Grafiken
- Zukunftssicher: Neue Zeichen nachrüstbar
Wo wird Unicode eingesetzt?
Unicode begegnet dir überall:
- Web: HTML, CSS, JSON (UTF-8 Standard)
- Programmierung: Python, Java, JavaScript
- Dateien: .txt, .csv, .json, .xml
- Datenbanken: MySQL, PostgreSQL
- Emojis: In Chats und sozialen Medien
Tipps für Anfänger
- UTF-8 verwenden: Immer und überall
- HTML-Meta:
<meta charset="UTF-8"> - Datenbank:
utf8mb4für Emojis - Python:
open(file, encoding='utf-8') - Emojis brauchen 4 Byte: Nicht 3!
Wussten Sie schon? Der Codepoint U+1F4A9 ist das 💩-Emoji (Pile of Poo). Es wurde 2010 in Unicode 6.0 aufgenommen und ist seitdem eines der beliebtesten Emojis überhaupt. Emojis haben die Art, wie wir digital kommunizieren, grundlegend verändert – über 10 Milliarden werden täglich allein auf Facebook verschickt! Übrigens: Die meisten Emojis bestehen aus 2 Codepoints (Surrogate Pairs), weil sie außerhalb der Basic Multilingual Plane (BMP) liegen.
4. Unicode-Kodierungen im Vergleich
Unicode definiert Codepoints, aber nicht, wie sie im Speicher abgelegt werden. Das machen UTF-8, UTF-16 und UTF-32:
| Kodierung | Bytes pro Zeichen | Vorteil | Nachteil | Verwendung |
|---|---|---|---|---|
| UTF-8 | 1-4 | ASCII-kompatibel, speichereffizient | Variable Länge | Web, Linux, JSON, HTML |
| UTF-16 | 2-4 | Feste 2 Bytes für die meisten Zeichen | Nicht ASCII-kompatibel, Endianness | Windows, Java, JavaScript |
| UTF-32 | 4 | Feste Länge, einfach | 4× Speicherverbrauch | Intern in manchen Systemen |
UTF-8 (Web-Standard)
Die meistgenutzte Kodierung im Web:
- ASCII-Zeichen: 1 Byte
- Umlaute: 2 Bytes
- Emojis: 4 Bytes
- Vorteil: Abwärtskompatibel zu ASCII
UTF-16 (Windows/Java)
Verwendet 2 oder 4 Bytes pro Zeichen:
- BMP-Zeichen: 2 Bytes (0x0000-0xFFFF)
- Emojis: 4 Bytes (Surrogate Pairs)
- Endianness: LE (Windows) oder BE
- BOM: Byte Order Mark am Anfang
UTF-32
Feste 4 Bytes pro Zeichen:
- Einfach: Direkte Codepoint-Darstellung
- Verschwendung: 4 Bytes auch für 'A'
- Verwendung: Intern, für Algorithmen
- Selten: In Dateien fast nie
Was soll ich verwenden?
- Web: Immer UTF-8
- Linux/macOS: UTF-8
- Windows-Intern: UTF-16 (aber Dateien: UTF-8)
- Python: UTF-8 (Standard seit Python 3)
- Datenbank: utf8mb4 (UTF-8 mit 4 Byte)
5. Geschichte der Zeichenkodierung
Von ASCII über Latin-1 zu Unicode – wie Computer lernten, alle Sprachen zu verstehen.
ASCII entsteht
Die American Standards Association standardisiert ASCII mit 7 Bit und 128 Zeichen. Die Basis für alle modernen Kodierungen.
IBM PC und Extended ASCII
IBM führt Extended ASCII mit 256 Zeichen ein. Damit sind Umlaute, Akzente und Grafikzeichen darstellbar. Weltweiter Standard für PCs.
ISO 8859
Die ISO 8859-Familie wird veröffentlicht. Verschiedene Varianten für verschiedene Sprachen: Latin-1 (Westeuropa), Latin-2 (Osteuropa), etc. Ein Flickenteppich.
Unicode 1.0
Unicode 1.0 wird veröffentlicht – mit 7.161 Zeichen. Die erste Version des universellen Zeichensatzes. UTF-8 wird gleichzeitig vorgestellt.
Unicode wird ISO-Standard
Unicode wird mit ISO 10646 kompatibel. Die beiden Standards werden zusammengeführt. Endgültiger Durchbruch für Unicode.
Emojis in Unicode 6.0
Emojis werden offiziell in Unicode 6.0 aufgenommen – mit über 700 Zeichen. Anfangs umstritten, heute aus der digitalen Kommunikation nicht mehr wegzudenken.
Unicode überall
Unicode 15.1 enthält über 149.000 Zeichen aus 160+ Schriftsystemen. UTF-8 ist mit über 97% aller Websites die meistgenutzte Kodierung weltweit – ASCII lebt in ihr weiter.
6. FAQ – Spannende Fragen & Antworten
Häufige Fragen zu Unicode
Das ist ein häufiges Missverständnis – die beiden Begriffe sind nicht dasselbe:
| Aspekt | Unicode | UTF-8 |
|---|---|---|
| Was | Zeichensatz (Standard) | Kodierung (Speicherformat) |
| Definiert | Codepoints (U+XXXX) | Byte-Folgen |
| Beispiel | A = U+0041 | A = 0x41 (1 Byte) |
| Alternative | - | UTF-16, UTF-32 |
Analogie:
- Unicode ist wie ein Wörterbuch: Es sagt, welche Zeichen es gibt und wie sie heißen.
- UTF-8 ist wie eine Schrift: Es legt fest, wie die Zeichen auf Papier gebracht werden.
Beispiel: Das Zeichen "ä" (U+00E4) wird in:
- UTF-8: als
0xC3 0xA4(2 Bytes) gespeichert - UTF-16: als
0x00E4(2 Bytes) gespeichert - UTF-32: als
0x000000E4(4 Bytes) gespeichert
Fazit: Unicode ist der Standard, UTF-8 ist eine Kodierung davon.
Das liegt an der Unicode-Struktur und der UTF-8-Kodierung:
Unicode-Planes:
- BMP (Basic Multilingual Plane): U+0000 bis U+FFFF (2 Bytes in UTF-16)
- SMP (Supplementary Multilingual Plane): U+10000 bis U+10FFFF (4 Bytes in UTF-16)
Die meisten Emojis liegen in der SMP (ab U+1F300 für Smileys), z.B. 😀 = U+1F600.
UTF-8-Kodierung nach Codepoint-Bereich:
| Codepoint | Bytes | Beispiel |
|---|---|---|
| U+0000 - U+007F | 1 | A, 0, ! |
| U+0080 - U+07FF | 2 | ä, ñ, λ |
| U+0800 - U+FFFF | 3 | €, 日, ✓ |
| U+10000 - U+10FFFF | 4 | 😀, 𝕏, 🎉 |
Beispiel 😀 (U+1F600):
Konsequenz für Datenbanken: MySQL's klassisches utf8 ist eigentlich nur 3-Byte-UTF-8 und kann keine Emojis speichern! Verwende utf8mb4.
Surrogate Pairs sind ein Trick in UTF-16, um Zeichen außerhalb der BMP (Basic Multilingual Plane) darzustellen:
Das Problem:
- UTF-16 verwendet normalerweise 2 Bytes pro Zeichen
- Damit sind nur U+0000 bis U+FFFF darstellbar
- Emojis liegen aber bei U+1F600 (außerhalb!)
Die Lösung: Surrogate Pairs
- Zwei aufeinanderfolgende 2-Byte-Werte
- High Surrogate: U+D800 - U+DBFF (erstes Wort)
- Low Surrogate: U+DC00 - U+DFFF (zweites Wort)
- Kombiniert ergeben sie einen Codepoint > U+FFFF
Beispiel 😀 (U+1F600):
(= 0xD83D 0xDE00 in UTF-16)
Berechnung:
High = 0xD800 + (0xF600 >> 10) = 0xD83D
Low = 0xDC00 + (0xF600 & 0x3FF) = 0xDE00
Auswirkung in JavaScript:
"😀".lengthgibt 2 zurück (nicht 1!)- Grund: JavaScript zählt UTF-16 Code Units
- Lösung:
Array.from("😀").length→ 1
In UTF-8 gibt es keine Surrogate Pairs – dort wird jedes Zeichen direkt als 1-4 Bytes kodiert.
Die BOM (Byte Order Mark) ist ein spezielles Zeichen am Anfang einer Unicode-Datei, um die Byte-Reihenfolge (Endianness) anzugeben:
Was ist Endianness?
- Big Endian (BE): Höchstwertiges Byte zuerst (z.B.
00 41für 'A') - Little Endian (LE): Niedrigstwertiges Byte zuerst (z.B.
41 00für 'A')
BOM-Werte:
| Kodierung | BOM (Hex) |
|---|---|
| UTF-8 | EF BB BF |
| UTF-16 BE | FE FF |
| UTF-16 LE | FF FE |
| UTF-32 BE | 00 00 FE FF |
| UTF-32 LE | FF FE 00 00 |
UTF-8 BOM – ja oder nein?
- Empfehlung: Keine BOM in UTF-8-Dateien!
- Grund: UTF-8 hat keine Endianness (byteweise definiert)
- Problem: Die BOM kann als sichtbares Zeichen erscheinen (z.B. auf Webseiten)
- Ausnahme: Windows-Notepad fügt manchmal BOM hinzu
Wo ist BOM wichtig?
- UTF-16/UTF-32: Essentiell, da Endianness nicht anders erkennbar
- UTF-8: Überflüssig, meist sogar schädlich
Erkennungszeichen: Wenn in einer Konfigurationsdatei plötzlich  am Anfang steht, ist das eine UTF-8-BOM, die als Text interpretiert wurde!
Das ist ein klassisches Encoding-Problem, oft als "Mojibake" bezeichnet. Meist liegt es an inkonsistenten Kodierungen:
Häufige Ursachen:
- Verbindung: Client sendet UTF-8, Datenbank erwartet Latin-1
- Tabellen-Charset: Tabelle ist auf
latin1stattutf8mb4 - Kollation: Falsche Sortierreihenfolge (z.B.
utf8_general_ci) - PHP/Java: Keine explizite UTF-8-Deklaration
Typisches Symptom:
Angezeigt: Grüße ← Mojibake!
Warum passiert das?
- "ü" ist in UTF-8:
0xC3 0xBC(2 Bytes) - Wenn als Latin-1 gelesen: "ü" (2 Zeichen!)
- Deshalb:
Grüße → Grüße
Die Lösung für MySQL/MariaDB:
- Datenbank:
CREATE DATABASE ... CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - Tabelle:
... DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - Verbindung (PHP):
$pdo->exec("SET NAMES utf8mb4"); - Verbindung (Python):
charset='utf8mb4'
Wichtig: utf8 reicht nicht! MySQL's utf8 ist nur 3-Byte-UTF-8. Verwende immer utf8mb4.
Diese drei Begriffe sind zentral für das Verständnis von Textverarbeitung:
| Begriff | Bedeutung | Beispiel |
|---|---|---|
| Codepoint | Zahl im Unicode-Standard | U+00E4 = ä |
| Grapheme | Was der Nutzer als "Zeichen" sieht | "é" (aus e + Akzent) |
| Glyphe | Visuelle Darstellung in einer Schriftart | Die Form von "ä" in Arial |
Das Problem mit Codepoints:
- "é" kann als 1 Codepoint (U+00E9) oder 2 Codepoints (e + U+0301) dargestellt werden
- "👨👩👧" (Familie) = 5 Codepoints (4 Personen + 3 Zero-Width Joiners)
- "🇩🇪" (Deutschland-Flagge) = 2 Codepoints (Regional Indicator D + E)
Praxis-Konsequenz:
- string.length in JavaScript zählt Codepoints (mit Surrogate Pairs)
- Nutzer sieht aber Grapheme (kombinierte Zeichen)
- Deshalb:
"👨👩👧".length === 8in JS, aber 1 Grapheme
Lösung für korrekte Zeichenzählung:
- JavaScript:
Intl.Segmenter(modern) - Python:
graphemeBibliothek - Rust:
unicode-segmentation
Interessant: Ein einzelner Codepoint kann unterschiedlich aussehen (Glyphe), je nach Schriftart und Kontext. Deshalb sind Emojis je nach System unterschiedlich gestaltet.
HTML-Entities sind eine alternative Darstellung für Unicode-Zeichen – besonders in HTML/XML, wo manche Zeichen Sonderbedeutung haben:
| Zeichen | Unicode | HTML-Entity | Dezimal |
|---|---|---|---|
| < | U+003C | < | < |
| & | U+0026 | & | & |
| © | U+00A9 | © | © |
| € | U+20AC | € | € |
| 😀 | U+1F600 | (kein benannter) | 😀 |
Wann HTML-Entities verwenden?
- Pflicht: Für
<,>,&im HTML-Text - Sinnvoll: Wenn die Seite keine UTF-8-Deklaration hat
- Nicht nötig: In UTF-8-Dokumenten können die Zeichen direkt stehen
Beispiele:
© 2024 – Alle Rechte vorbehalten
€ 19,99
Best Practice 2024:
- UTF-8 als Zeichensatz deklarieren (
<meta charset="UTF-8">) - Unicode-Zeichen direkt schreiben (keine Entities nötig)
- Ausnahme:
<,>,&in Code-Beispielen
Hier eine Übersicht der wichtigsten Sprachen:
Python 3:
ord('A') # 65
ord('ä') # 228
ord('😀') # 128512
# Codepoint → Zeichen
chr(65) # 'A'
chr(228) # 'ä'
chr(128512) # '😀'
# UTF-8 Bytes
'ä'.encode('utf-8') # b'\xc3\xa4'
bytes.fromhex('c3a4').decode('utf-8') # 'ä'
JavaScript:
'A'.charCodeAt(0) // 65
'A'.codePointAt(0) // 65
'😀'.codePointAt(0) // 128512
// Codepoint → Zeichen
String.fromCharCode(65) // 'A'
String.fromCodePoint(128512) // '😀'
// UTF-8 Bytes
new TextEncoder().encode('ä') // Uint8Array [195, 164]
new TextDecoder().decode(new Uint8Array([195, 164])) // 'ä'
Bash/Linux:
printf '%d\n' "'A" # 65
printf '%d\n' "'ä" # 228
# Codepoint → Zeichen (hex)
printf '\u0041\n' # A
printf '\u00e4\n' # ä
printf '\U0001F600\n' # 😀
# UTF-8 Bytes anzeigen
echo -n "ä" | xxd # c3a4
Wichtig:
- Python 2 hatte viele Probleme mit Unicode – Python 3 ist Standard
- JavaScript arbeitet intern mit UTF-16 (Surrogate Pairs!)
- Bash verwendet
\ufür BMP und\Ufür alle
Zusammenfassung
Die wichtigsten Punkte
- Unicode: Universeller Zeichensatz mit 149.000+ Zeichen
- Codepoint: U+XXXX (hexadezimal)
- UTF-8: 1-4 Bytes pro Zeichen, ASCII-kompatibel, Web-Standard
- UTF-16: 2-4 Bytes, verwendet Surrogate Pairs
- Emojis: Meist 4 Bytes in UTF-8, 2 Codepoints
- Surrogate Pairs: Mechanismus für Zeichen außerhalb der BMP
- BOM: Nur für UTF-16/32 nötig, in UTF-8 meist schädlich
- Mojibake: Falsche Anzeige durch inkonsistente Kodierung
- Best Practice: Überall UTF-8 (utf8mb4 in MySQL)
- Unser Tool: Live-Konvertierung in alle Formate
Weitere Tools
Vollständige ASCII-Tabelle mit Dezimal, Hex, Oktal und Binär.
Zum ToolKonvertiere Zahlen zwischen Binär, Oktal, Dezimal und Hex.
Zum ToolMD5, SHA-1, SHA-256 und SHA-512 für Text und Dateien.
Zum ToolKonvertiere Farben zwischen HEX, RGB, HSL, HSV und CMYK.
Zum Tool