Skip to main content
Dat 1. Semester
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Unicode Cheatsheet

Unicode Cheatsheet til IO-klassen


Hvad er Unicode?

Unicode er en international standard der giver hvert tegn i verden et unikt nummer — et såkaldt code point. Det gælder bogstaver, tegnsætning, matematiske symboler, box-tegn og emojis.

I Java skriver du et unicode-tegn som \uXXXX hvor XXXX er code pointet i hexadecimalt:

System.out.println("\u2665"); // ♥
System.out.println("\u2713"); // ✓
System.out.println("\u2718"); // ✘

Emojis er også Unicode — men pas på

En emoji som 💩 har unicode-koden U+1F4A9. Men Unicode siger kun hvad tegnet er — ikke hvordan det skal se ud. Det beslutter platformen selv. Derfor ser den samme emoji forskellig ud på Apple, Google og Windows. Send en 😂 fra en iPhone og modtageren på Android ser måske noget lidt anderledes.

Box-tegn og symboler herunder er meget mere stabile på tværs af platforme.


Nyttige Unicode-tegn

Pile og navigation

TegnKodeJava
U+2192"\u2192"
U+2190"\u2190"
U+2191"\u2191"
U+2193"\u2193"
U+25BA"\u25BA"
»U+00BB"\u00BB"

Symboler

TegnKodeJavaBrug
U+2713"\u2713"Succes
U+2718"\u2718"Fejl
U+2605"\u2605"Score/favorit
U+2606"\u2606"Tom stjerne
U+2665"\u2665"Liv/health
U+2666"\u2666"Diamant
U+2022"\u2022"Bullet point
U+2026"\u2026"Ellipse
©U+00A9"\u00A9"Copyright

Box-tegn — enkelt streg

TegnKodeJava
U+2500"\u2500"
U+2502"\u2502"
U+250C"\u250C"
U+2510"\u2510"
U+2514"\u2514"
U+2518"\u2518"

Eksempel:

┌─────────────┐
│   Eksempel  │
└─────────────┘

Box-tegn — dobbelt streg

TegnKodeJava
U+2550"\u2550"
U+2551"\u2551"
U+2554"\u2554"
U+2557"\u2557"
U+255A"\u255A"
U+255D"\u255D"

Eksempel:

╔═════════════╗
║   Eksempel  ║
╚═════════════╝

ANSI-farver (til TextStyle enum)

ANSI escape codes er en anden standard — ikke Unicode, men gammel terminalteknologi fra 1970’erne der stadig bruges i dag. De virker i IntelliJ’s terminal men ikke altid i Windows CMD.

KodeEffekt
\u001B[0mReset — husk altid denne til sidst!
\u001B[1mFed (bold)
\u001B[3mKursiv
\u001B[4mUnderstreget
\u001B[31mRød
\u001B[32mGrøn
\u001B[33mGul
\u001B[34mBlå
\u001B[35mLilla
\u001B[36mCyan

Glem ikke \u001B[0m til sidst — ellers fortsætter farven i resten af terminalen.

Baggrundsfarver

Samme princip som tekstfarver — bare andre koder:

KodeBaggrund
\u001B[40mSort
\u001B[41mRød
\u001B[42mGrøn
\u001B[43mGul
\u001B[44mBlå
\u001B[45mLilla
\u001B[46mCyan
\u001B[47mHvid

Du kan kombinere tekst- og baggrundsfarve frit:

// Hvid tekst på rød baggrund
System.out.println("\u001B[41m\u001B[37m" + " GAME OVER " + "\u001B[0m");

// Sort tekst på gul baggrund
System.out.println("\u001B[43m\u001B[30m" + " ADVARSEL " + "\u001B[0m");

Og i TextStyle enum:

BG_RED("\u001B[41m"),
BG_GREEN("\u001B[42m"),
BG_YELLOW("\u001B[43m"),
BG_BLUE("\u001B[44m"),
BG_CYAN("\u001B[46m"),

Eksempel i Java

public void printTitle(String message) {
    String line = "\u2550".repeat(message.length() + 4);
    System.out.println("\u001B[36m\u001B[1m" +
        "\u2554" + line + "\u2557\n" +
        "\u2551  " + message + "  \u2551\n" +
        "\u255A" + line + "\u255D" +
        "\u001B[0m");
}

public void printSuccess(String message) {
    System.out.println("\u001B[32m\u001B[1m" + "\u2713 " + message + "\u001B[0m");
}

public void printError(String message) {
    System.out.println("\u001B[31m" + "\u2718 " + message + "\u001B[0m");
}

Forventet output:

╔════════════════╗
║  Gæt et tal!  ║
╚════════════════╝

✓ Tillykke Alice! Du gættede det på 3 forsøg!
✘ Ingen flere forsøg! Tallet var 42.

Emojis til copy-paste

Hvorfor ikke \uXXXX til emojis?

De unicode-tegn vi så tidligere (✓ ♥ ★) ligger alle under U+FFFF og kan skrives direkte som \uXXXX i Java.

Emojis er nyere og ligger over U+FFFF — fx er 🎉 U+1F389. Java bruger internt 16-bit chars, så tegn over U+FFFF kræver et såkaldt surrogate pair — to \uXXXX koder i forlængelse af hinanden:

// 🎉 som surrogate pair — teknisk korrekt men ulæseligt
System.out.println("\uD83C\uDF89");

// 🎉 copy-pastet direkte ind i koden — meget bedre
System.out.println("🎉");

Til emojis er copy-paste den rigtige løsning. IntelliJ håndterer det fint så længe filen er gemt som UTF-8 (hvilket er default).

Emojis kan kopieres direkte ind i IntelliJ. Husk at de ser forskellige ud på forskellige platforme!


Find emojis

emojipedia.org — søg og copy-paste direkte ind i IntelliJ.