How Unicode Works: A Beginner’s Guide

Unicode is a standard that gives every character its own number, called a code point, written like U+0041 for the letter A. Software turns that number into bytes using an encoding, usually UTF-8. Understanding how Unicode works explains why one file can hold English, Arabic, math symbols and emoji without them clashing.

Before Unicode, each language had its own byte scheme and they collided. Unicode replaced that mess with a single map big enough for every writing system. This guide covers what a code point is, how encodings store it, and how to type any character from its code point on Windows, Mac, and the web.

Code points versus encodings

Two ideas get mixed up constantly, so keep them separate.

A code point is the identity of a character. The euro sign is U+20AC. The number after U+ is always hexadecimal. Unicode has room for 1,114,112 code points and has assigned over 150,000 of them so far, spread across 17 blocks called planes.

An encoding is how that code point gets written to disk as bytes. UTF-8 is the common one and runs about 98% of the web. It uses one byte for the old ASCII characters and up to four bytes for the rest, which is why it stayed backward compatible with plain English text. UTF-16 and UTF-32 exist too, but you rarely pick them by hand.

The first 128 code points are identical to ASCII, so a file of plain letters and digits reads the same whether it was saved as ASCII or UTF-8. Problems start above that line, which is where emoji versus plain text symbols also gets confusing.

How to type a character from its code point

Every platform has a way to enter a character by its Unicode value. The catch is that some methods want the number in decimal and some want it in hex. Get that wrong and you get the wrong character or nothing.

MethodInputWorks in
Word / Outlook / OneNote (Alt+X)Type the hex code point, press Alt+XWord, Outlook, OneNote
Chromebook & LinuxCtrl+Shift+U, type hex, Enter or SpaceChromeOS, many Linux apps
Mac Unicode Hex InputHold Option, type the 4-digit hexMac apps (keyboard enabled)
Excel & Google Sheets=UNICHAR(decimal)Excel, Google Sheets
Windows Alt codeAlt + decimal on the numeric keypadMost Windows apps
HTML&#decimal; or &#xhex;Web pages

The Unicode code point in U+ notation is always hex. Do not paste that hex number into a decimal-only field. The euro sign is U+20AC in hex but 8364 in decimal, so it is 20AC then Alt+X in Word, but =UNICHAR(8364) in a spreadsheet.

Windows

Windows Alt codes take a decimal number typed on the numeric keypad while you hold Alt. They will not work off the top-row number keys. The leading zero matters above 127: Alt+0128 and up reads the modern Windows-1252 set, while Alt+128 and up reads the old DOS code page 437. Alt+0169 gives © and Alt+0169 gives ®, so the zero is not optional. Use the leading-zero form for anything going into a document.

One more wrinkle: the zero-less codes read from whichever OEM code page the machine uses. CP437 is the US default, but CP850 is standard in the UK, Ireland, Canada, and Australia, so the same zero-less code can produce different characters for different readers. The leading-zero form does not have that problem. For anything not on a code page, use Win+. to open the emoji and symbol panel, or search Character Map. Our Alt codes finder tool looks up the decimal value for you.

Mac

Mac has no Alt codes at all. It uses Option-key combinations and a picker. For code-point entry, turn on the Unicode Hex Input keyboard in System Settings under Keyboard, then Input Sources. With it selected, hold Option and type the four-digit hex code. That covers the Basic Multilingual Plane, the block that holds most everyday characters.

For everything else, press Ctrl+Cmd+Space to open the Character Viewer, where you can search by name or code point. The Mac Character Viewer guide walks through the search and favorites setup.

Word, Excel, and PowerPoint

In Word, type the hex code point and press Alt+X. Press Alt+X again right after and it toggles back to show the code. This works in Word, Outlook, and OneNote, and the same Insert → Symbol dialog works in PowerPoint. It does not work in Excel.

Excel uses the =UNICHAR() function, and it takes the decimal number, not hex. So =UNICHAR(8364) returns €. Insert → Symbol also works if you would rather click.

Google Docs and Sheets

Google Docs has Insert → Special characters with a draw-to-find search box, which is the fastest way when you know the shape but not the code. Google Sheets has no such menu. Use =UNICHAR(decimal), paste from elsewhere, or type it in another app and copy it in. If you are entering a character into a cell with an OS input method, press F2 first to enter edit mode.

Phones and Chromebook

iPhone and Android have no code-point entry. You pick from the emoji keyboard, use the long-press accent popups, or set up a text replacement so a short trigger expands into the character. That replacement trick is the reliable way to get an odd symbol onto a phone.

Chromebook has no Alt codes either, and a USB numpad will not add them, because Alt codes are Windows software, not keypad hardware. ChromeOS uses Ctrl+Shift+U: press it, type the hex code with no U+ prefix, then press Enter or Space. An underlined u confirms input mode. There is also a symbol picker at Launcher+Shift+Space. Some web text fields swallow the shortcut, in which case paste is the fallback.

Notion, Slack, Discord, and Canva

None of these have a code-point input box. The dependable move is to paste the character in. Slack and Discord support :shortcodes: for emoji, but not for plain text symbols. For anything you use often, set a system text replacement so the character follows you across every app. That beats hunting for a per-app shortcut that does not exist.

HTML and CSS

On the web you can reference a character by code point. HTML accepts decimal as € or hex as € — note the x marks the hex form. Many characters also have a named entity, like €. In CSS content values, use a backslash and the hex, such as \20AC. Save the file as UTF-8 and you can usually just type the character directly instead.

Why characters break: mojibake and tofu

Two failures come up again and again, and they have different causes.

Garbled text like é or € is an encoding mismatch, nicknamed mojibake. The bytes were written as UTF-8 but read as a single-byte code page, so multi-byte characters split into gibberish. Fixing it means reopening the file with the correct encoding, not retyping.

An empty box (□) or a box with hex inside is not an encoding problem. The code point arrived fine, but the current font has no glyph for it, so the system draws a placeholder called tofu. Switch to a font that covers the character and it appears. The character is correct either way.

Where Unicode shows up

Unicode is the reason a filename can mix Japanese and English, a spreadsheet can hold accented names, and an emoji sent from a phone shows up on a laptop. It underpins web pages, databases, programming source files, and every messaging app. When keyboards differ, like the layout gap between US and UK keyboards or across AZERTY, QWERTY, and QWERTZ, Unicode is the shared layer underneath that keeps the stored text consistent.

Related guides

Frequently asked questions

Is Unicode the same as UTF-8?

No. Unicode is the map that assigns each character a code point. UTF-8 is one way to store those code points as bytes. UTF-16 and UTF-32 are other encodings of the same Unicode map.

Why does the same emoji look different on my phone and my laptop?

The code point is the same, but each vendor draws its own font. Apple, Google, Microsoft, and Samsung all ship different emoji artwork, so identical text renders in different styles.

Do I need to memorize code points to type symbols?

No. Picker tools like Windows Character Map, the Mac Character Viewer, and Google Docs Special characters let you search by name or draw the shape. Code points only help when you want a fast keyboard shortcut.

Is ASCII still part of Unicode?

Yes. The first 128 Unicode code points match ASCII exactly, which is why plain English text saved as UTF-8 is byte-for-byte the same as the old ASCII version.

Why did my text turn into symbols like é after saving?

That is an encoding mismatch. The file was written as UTF-8 but reopened as a single-byte code page, so multi-byte characters split apart. Reopen it and set the encoding to UTF-8 to recover the text.

Leave a Comment