Base100 是一種基於表情符號的位元組編碼方式,它會將 0 到 255 之間的每一個位元組值,對應到位於 U+1F3F7 到 U+1F4F6 範圍內的某個 Unicode 碼點上。公式很直接:把位元組值加上 U+1F3F7,得到的結果就是代表該位元組的符號。由於這個範圍內的每個碼點都是單一的 emoji 區段字元,像 "Hi" 這樣的一般文字會變成一串簡短、辨識度高的表情符號,在任何聊天串中都會特別醒目。Base100 處理的是 UTF-8 位元組,而不是使用者輸入的字元,所以來源文字中的一個帶有重音的字母、中文字,或是一個 emoji,可能會依該字元所需的 UTF-8 位元組數,展開成兩個、三個或四個 Base100 符號。這個編碼方式完全可逆,而且是在瀏覽器本地端執行,相關說明記錄在原始的 base100 project on GitHub 中。

base100 encode for beginners
Base100 Encode for Beginners: A Plain-English Starter Guide

Base100 編碼實際上做了什麼

大多數適合初學者的編碼方式,都會試圖把資料塞進像 A-Z、0-9、+、/ 這樣的小型字元集裡。Base100 走的是相反的路徑:它使用 256 個獨特的符號,這些符號取自高位數的 emoji Unicode 區段。你的輸入所能產生的每個位元組,都已經有專屬的符號,這代表這個對應方式不需要填補字元、不需要分隔符號,也不需要長度標記。輸出結果看起來不尋常,但其背後的數學運算,是你會遇過最簡單的編碼方式之一。

如果你曾經把一串奇怪的符號貼到聊天裡,然後看著朋友嘗試複製它們,你就已經明白位元組精確的編碼為何重要。當系統悄悄插入一個零寬度字元,或換掉一個外觀相似的字符時,解碼後的文字就會改變。Base100 讓每個位元組都擁有自己可辨識的位置,藉此讓這個風險清楚可見,而嚴格的解碼器在看到不對勁的內容時,會拒絕猜測。

一對位元組一符號的規則

這個對應規則建立在一個加法之上。以碼點 U+1F3F7 為基準,加上位元組值:

  • Byte 0 becomes U+1F3F7 (the lowest symbol in the range).
  • Byte 1 becomes U+1F3F8 (one step up).
  • Byte 255 becomes U+1F4F6 (the top of the range).

That is the whole encoding. There is no checksum, no compression, no translation table, and no delimiter between symbols. The official Base100 specification documents this byte-to-code-point formula, and independent implementations follow the same math. Because the mapping is purely numeric, every conforming decoder subtracts U+1F3F7 from each symbol to recover the original byte.

Input byteUTF-8 hexResulting code pointPosition in range
00x00U+1F3F7Lowest
10x01U+1F3F8Lowest + 1
72 (ASCII "H")0x48U+1F43F72 above the base
105 (ASCII "i")0x69U+1F460105 above the base
2550xFFU+1F4F6Top of the range

每個碼點實際顯示的表情符號,會依作業系統、字型和瀏覽器而有所不同;但數學運算不會。只要碼點被保留下來,解碼出來的位元組就會完全相同。

如何使用 Base100 編碼文字

透過 Base100 Encoder / Decoder 進行編碼,是個快速的三步驟流程,而且全程都在你的瀏覽器中執行:

  1. Open the tool and select the "Text to Base100" direction.
  2. Type or paste your UTF-8 text into the input field. The tool first converts the text to its UTF-8 byte sequence and then maps each byte to a Base100 code point by adding its value to U+1F3F7.
  3. Click encode, then copy the resulting symbol stream exactly as it appears. Do not add spaces, line breaks, or emoji variation selectors in the middle of the stream.

A practical worked example using two ordinary ASCII letters makes the formula concrete. Encoding the word "Hi" produces two symbols because each letter is one UTF-8 byte:

  • "H" is byte 72 (hex 0x48), so the encoder emits U+1F3F7 + 72 = U+1F43F.
  • "i" is byte 105 (hex 0x69), so the encoder emits U+1F3F7 + 105 = U+1F460.

Substituting the numbers into the formula: 0x1F3F7 + 0x48 = 0x1F43F and 0x1F3F7 + 0x69 = 0x1F460. The output stream is therefore exactly two code points, no padding, no delimiter. That output is your Base100-encoded text.

如何將 Base100 符號解碼回文字

解碼是反向的過程,但初學者很快就會明白,嚴謹正是這一切的核心。使用同一個 Base100 Encoder / Decoder,並切換方向:

  1. Choose "Base100 to text."
  2. Paste the symbol stream you want to decode. Every symbol must fall inside U+1F3F7 through U+1F4F6 with no variation selectors, spaces, or line breaks added by your chat app.
  3. Run the decoder. It iterates the input by code point, subtracts U+1F3F7 from each symbol to recover the original byte, and then runs a fatal UTF-8 validation. If any symbol is outside the range or the byte sequence is not valid UTF-8, the tool reports an error instead of silently inserting replacement characters.

A successful decode returns your original text byte-for-byte. A failed decode returns an error instead of silently inserting replacement characters, which is how the strict decoder protects you from a copy-paste that looked fine on screen but had been mangled in transit.

為何某些字元會變成多個符號

這是新使用者最常感到意外的地方。Base100 不是計算你看到的字元數,而是計算這些字元在 UTF-8 中佔了多少位元組。對純 ASCII 文字來說,兩者的關係大致是一對一,但只要你的輸入含有英文字母以外的任何內容,這個比例就會快速增加:

Input characterApproximate UTF-8 byte countApproximate Base100 symbol count
Plain ASCII letter (A-Z, a-z)1 byte1 symbol
Accented Latin letter (é, ñ, ü)2 bytes2 symbols
CJK character (中, 日, 한)3 bytes3 symbols
High emoji or supplementary symbol4 bytes4 symbols

The exact figures depend on the specific byte sequence your text produces, so use the tool to count symbols for any given input. The general direction is the part that matters: more complex characters always expand, never shrink, in Base100.

Base100 不是什麼(初學者的常見誤解)

由於輸出看起來像是被攪亂過,初學者有時會把 Base100 和加密混淆。這個對應規則是完全公開、完全可逆,而且任何知道公式的人都能讀懂。請把下列幾點視為硬性規則:

  • Base100 is not encryption. It hides text behind a strange alphabet, not behind a secret key.
  • Base100 is not a hash. There is no checksum, no signature, no authentication, and no way to detect an accidental change.
  • Base100 is not compression. Output is always at least as long as the input measured in bytes, and is usually longer for non-ASCII text.
  • Base100 is not steganography. The encoded stream looks obviously different from normal text.
  • Base100 is not a human-language emoji translation. Each symbol represents a numeric byte, not a word, meaning, or visual concept.

If you need secrecy, integrity, or tamper detection, reach for reviewed encryption such as AES-GCM, authenticated hashing, or a signed message format instead. For ASCII-only transport, formats like Base64, Base32, Base58, or hex usually travel through more systems without being modified.

解碼前先處理好複製貼上的問題

許多解碼失敗的情況,根本不是編碼器造成的。最常見的兇手是聊天應用程式、鍵盤、輸入法,以及會悄悄插入變體選擇符、零寬度空白或替代表情符號的標準化流程。看起來一模一樣的串流,在位元組層級上可能與原本產生的內容不同,而嚴格的 Base100 解碼會拒絕處理。為了保持穩定:

  • Copy the symbol stream from the source that generated it whenever possible, rather than retyping it.
  • Avoid auto-correct and emoji-replacement features when pasting Base100 output into a chat or document.
  • If decoding fails, regenerate the symbol stream from the original source and remove any invisible characters before retrying.
  • 每次操作請保持在 500,000 位元組或符號的上限內,這樣瀏覽器分頁才不會因為不小心貼上過大的內容而卡住。

The strict rejection is a feature, not a flaw. It tells you when the data was changed in transit instead of pretending everything is fine and returning nonsense text.

接下來可以怎麼深入 Base100

Once the basic flow feels comfortable, a few follow-up reads sharpen the picture. Beginners who want a quick reference for byte values and their code points will appreciate the Base100 cheat sheet, which lines up common bytes with their Base100 symbols side by side. From there, you can explore larger pastes, programmatic workflows, or how the same mapping is implemented in other languages. The format itself is small enough to read in a sitting, and that is exactly what makes it a friendly first encoding for anyone new to byte-level data work.

For a deeper look, see Base64 Decode for Beginners: A Plain-English Guide.