⚔ THE CLANS
⚙ UTF-8 SOURCE FILE REFERENCE
v0.97b2 · Unicode to CP437 mapping for devkit source files
[1.1]

How to Enable UTF-8

There are two ways to tell the devkit tools that a source file is UTF-8:

Method 1: .u8. in the filename

Name the file with .u8. before the final extension:

myquest.u8.evt      (instead of myquest.evt)
spells.u8.txt       (instead of spells.txt)

The compiler detects the .u8. in the filename and converts each line from UTF-8 to CP437. If the filename does not contain .u8., the file is read as raw CP437 with no conversion. This method works with all devkit compilers and makepak.

Method 2: encoding marker comment

Add a marker comment as the very first line of the file:

# encoding: utf-8

This method is used by installer INI files. The installer detects the marker and converts UTF-8 to CP437 before display.

NOTE: The compiled output is always CP437 — identical to what a CP437 source file would produce. ASCII characters (letters, digits, punctuation) pass through unchanged.
[1.2]

Characters That Are Not Allowed

Certain Unicode characters that look similar to ASCII punctuation are blocked because they would break the game's pipe-code (|NN) and backtick-code (`XY) colour formatting. The compiler will print an error with a suggested replacement.

CharacterUse instead
U+2018 left single quotation mark / U+2019 right single quotation markASCII apostrophe '
U+201C left double quotation mark / U+201D right double quotation markASCII quotation mark "
U+2014 em-dash-- (double hyphen)
U+2013 en-dash- (hyphen)

These characters often appear when pasting text from a word processor. Replace them with the ASCII equivalents shown above.

Any Unicode codepoint not listed in the tables below (and not in the blocked list above) will also produce an error: U+XXXX has no CP437 equivalent.

[2.1]

High-Byte Table (CP437 0x80–0xFF)

The 128 high-byte entries of CP437 and their Unicode equivalents. Use the Unicode codepoint in UTF-8 source files; the converter maps it to the correct CP437 byte.

CP437UnicodeName
0x80U+00C7LATIN CAPITAL LETTER C WITH CEDILLA
0x81U+00FCLATIN SMALL LETTER U WITH DIAERESIS
0x82U+00E9LATIN SMALL LETTER E WITH ACUTE
0x83U+00E2LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84U+00E4LATIN SMALL LETTER A WITH DIAERESIS
0x85U+00E0LATIN SMALL LETTER A WITH GRAVE
0x86U+00E5LATIN SMALL LETTER A WITH RING ABOVE
0x87U+00E7LATIN SMALL LETTER C WITH CEDILLA
0x88U+00EALATIN SMALL LETTER E WITH CIRCUMFLEX
0x89U+00EBLATIN SMALL LETTER E WITH DIAERESIS
0x8AU+00E8LATIN SMALL LETTER E WITH GRAVE
0x8BU+00EFLATIN SMALL LETTER I WITH DIAERESIS
0x8CU+00EELATIN SMALL LETTER I WITH CIRCUMFLEX
0x8DU+00ECLATIN SMALL LETTER I WITH GRAVE
0x8EU+00C4LATIN CAPITAL LETTER A WITH DIAERESIS
0x8FU+00C5LATIN CAPITAL LETTER A WITH RING ABOVE
0x90U+00C9LATIN CAPITAL LETTER E WITH ACUTE
0x91U+00E6LATIN SMALL LETTER AE
0x92U+00C6LATIN CAPITAL LETTER AE
0x93U+00F4LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94U+00F6LATIN SMALL LETTER O WITH DIAERESIS
0x95U+00F2LATIN SMALL LETTER O WITH GRAVE
0x96U+00FBLATIN SMALL LETTER U WITH CIRCUMFLEX
0x97U+00F9LATIN SMALL LETTER U WITH GRAVE
0x98U+00FFLATIN SMALL LETTER Y WITH DIAERESIS
0x99U+00D6LATIN CAPITAL LETTER O WITH DIAERESIS
0x9AU+00DCLATIN CAPITAL LETTER U WITH DIAERESIS
0x9BU+00A2CENT SIGN
0x9CU+00A3POUND SIGN
0x9DU+00A5YEN SIGN
0x9EU+20A7PESETA SIGN
0x9FU+0192LATIN SMALL LETTER F WITH HOOK
0xA0U+00E1LATIN SMALL LETTER A WITH ACUTE
0xA1U+00EDLATIN SMALL LETTER I WITH ACUTE
0xA2U+00F3LATIN SMALL LETTER O WITH ACUTE
0xA3U+00FALATIN SMALL LETTER U WITH ACUTE
0xA4U+00F1LATIN SMALL LETTER N WITH TILDE
0xA5U+00D1LATIN CAPITAL LETTER N WITH TILDE
0xA6U+00AAFEMININE ORDINAL INDICATOR
0xA7U+00BAMASCULINE ORDINAL INDICATOR
0xA8U+00BFINVERTED QUESTION MARK
0xA9U+2310REVERSED NOT SIGN
0xAAU+00ACNOT SIGN
0xABU+00BDVULGAR FRACTION ONE HALF
0xACU+00BCVULGAR FRACTION ONE QUARTER
0xADU+00A1INVERTED EXCLAMATION MARK
0xAEU+00ABLEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAFU+00BBRIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xB0U+2591LIGHT SHADE
0xB1U+2592MEDIUM SHADE
0xB2U+2593DARK SHADE
0xB3U+2502BOX DRAWINGS LIGHT VERTICAL
0xB4U+2524BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xB5U+2561BOX DRAWINGS VERT SINGLE AND LEFT DOUBLE
0xB6U+2562BOX DRAWINGS VERT DOUBLE AND LEFT SINGLE
0xB7U+2556BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xB8U+2555BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xB9U+2563BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xBAU+2551BOX DRAWINGS DOUBLE VERTICAL
0xBBU+2557BOX DRAWINGS DOUBLE DOWN AND LEFT
0xBCU+255DBOX DRAWINGS DOUBLE UP AND LEFT
0xBDU+255CBOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xBEU+255BBOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xBFU+2510BOX DRAWINGS LIGHT DOWN AND LEFT
0xC0U+2514BOX DRAWINGS LIGHT UP AND RIGHT
0xC1U+2534BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xC2U+252CBOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xC3U+251CBOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xC4U+2500BOX DRAWINGS LIGHT HORIZONTAL
0xC5U+253CBOX DRAWINGS LIGHT VERT AND HORIZONTAL
0xC6U+255EBOX DRAWINGS VERT SINGLE AND RIGHT DOUBLE
0xC7U+255FBOX DRAWINGS VERT DOUBLE AND RIGHT SINGLE
0xC8U+255ABOX DRAWINGS DOUBLE UP AND RIGHT
0xC9U+2554BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xCAU+2569BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xCBU+2566BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xCCU+2560BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xCDU+2550BOX DRAWINGS DOUBLE HORIZONTAL
0xCEU+256CBOX DRAWINGS DOUBLE VERT AND HORIZONTAL
0xCFU+2567BOX DRAWINGS UP SINGLE AND HORIZ DOUBLE
0xD0U+2568BOX DRAWINGS UP DOUBLE AND HORIZ SINGLE
0xD1U+2564BOX DRAWINGS DOWN SINGLE AND HORIZ DOUBLE
0xD2U+2565BOX DRAWINGS DOWN DOUBLE AND HORIZ SINGLE
0xD3U+2559BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xD4U+2558BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xD5U+2552BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xD6U+2553BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xD7U+256BBOX DRAWINGS VERT DOUBLE AND HORIZ SINGLE
0xD8U+256ABOX DRAWINGS VERT SINGLE AND HORIZ DOUBLE
0xD9U+2518BOX DRAWINGS LIGHT UP AND LEFT
0xDAU+250CBOX DRAWINGS LIGHT DOWN AND RIGHT
0xDBU+2588FULL BLOCK
0xDCU+2584LOWER HALF BLOCK
0xDDU+258CLEFT HALF BLOCK
0xDEU+2590RIGHT HALF BLOCK
0xDFU+2580UPPER HALF BLOCK
0xE0U+03B1GREEK SMALL LETTER ALPHA
0xE1U+00DFLATIN SMALL LETTER SHARP S
0xE2U+0393GREEK CAPITAL LETTER GAMMA
0xE3U+03C0GREEK SMALL LETTER PI
0xE4U+03A3GREEK CAPITAL LETTER SIGMA
0xE5U+03C3GREEK SMALL LETTER SIGMA
0xE6U+00B5MICRO SIGN
0xE7U+03C4GREEK SMALL LETTER TAU
0xE8U+03A6GREEK CAPITAL LETTER PHI
0xE9U+0398GREEK CAPITAL LETTER THETA
0xEAU+03A9GREEK CAPITAL LETTER OMEGA
0xEBU+03B4GREEK SMALL LETTER DELTA
0xECU+221EINFINITY
0xEDU+03C6GREEK SMALL LETTER PHI
0xEEU+03B5GREEK SMALL LETTER EPSILON
0xEFU+2229INTERSECTION
0xF0U+2261IDENTICAL TO
0xF1U+00B1PLUS-MINUS SIGN
0xF2U+2265GREATER-THAN OR EQUAL TO
0xF3U+2264LESS-THAN OR EQUAL TO
0xF4U+2320TOP HALF INTEGRAL
0xF5U+2321BOTTOM HALF INTEGRAL
0xF6U+00F7DIVISION SIGN
0xF7U+2248ALMOST EQUAL TO
0xF8U+00B0DEGREE SIGN
0xF9U+2219BULLET OPERATOR
0xFAU+00B7MIDDLE DOT
0xFBU+221ASQUARE ROOT
0xFCU+207FSUPERSCRIPT LATIN SMALL LETTER N
0xFDU+00B2SUPERSCRIPT TWO
0xFEU+25A0BLACK SQUARE
0xFFU+00A0NO-BREAK SPACE
[2.2]

Control-Character Glyphs (CP437 0x01–0x1F + 0x7F)

In CP437, bytes 0x01–0x1F display as graphical glyphs rather than control characters. In UTF-8 source files, use the Unicode equivalents listed below. Tabs (0x09), newlines (0x0A), and carriage returns (0x0D) work normally in UTF-8 files — they are not converted to glyphs.

CP437UnicodeName
0x01U+263AWHITE SMILING FACE
0x02U+263BBLACK SMILING FACE
0x03U+2665BLACK HEART SUIT
0x04U+2666BLACK DIAMOND SUIT
0x05U+2663BLACK CLUB SUIT
0x06U+2660BLACK SPADE SUIT
0x07U+2022BULLET
0x08U+25D8INVERSE BULLET
0x09U+25CBWHITE CIRCLE
0x0AU+25D9INVERSE WHITE CIRCLE
0x0BU+2642MALE SIGN
0x0CU+2640FEMALE SIGN
0x0DU+266AEIGHTH NOTE
0x0EU+266BBEAMED EIGHTH NOTES
0x0FU+263CWHITE SUN WITH RAYS
0x10U+25BABLACK RIGHT-POINTING POINTER
0x11U+25C4BLACK LEFT-POINTING POINTER
0x12U+2195UP DOWN ARROW
0x13U+203CDOUBLE EXCLAMATION MARK
0x14U+00B6PILCROW SIGN
0x15U+00A7SECTION SIGN
0x16U+25ACBLACK RECTANGLE
0x17U+21A8UP DOWN ARROW WITH BASE
0x18U+2191UPWARDS ARROW
0x19U+2193DOWNWARDS ARROW
0x1AU+2192RIGHTWARDS ARROW
0x1BU+2190LEFTWARDS ARROW
0x1CU+221FRIGHT ANGLE
0x1DU+2194LEFT RIGHT ARROW
0x1EU+25B2BLACK UP-POINTING TRIANGLE
0x1FU+25BCBLACK DOWN-POINTING TRIANGLE
0x7FU+2302HOUSE
[2.3]

Alternative Codepoints Accepted Silently

Some CP437 characters have more than one plausible Unicode equivalent. The converter accepts the alternatives listed below without warning, mapping them to the same CP437 byte as the canonical codepoint.

AlternativeCanonicalCP437Note
U+03B2U+00DF0xE1Greek beta → sharp-s
U+03BCU+00B50xE6Greek mu → micro sign
U+2205U+03C60xEDEmpty set → phi
U+2208U+03B50xEEElement of → epsilon
U+2126U+03A90xEAOhm sign → omega
U+00D8U+03C60xEDO-stroke → phi (visual similarity)
U+03D5U+03C60xEDPhi symbol → phi
U+2300U+03C60xEDDiameter sign → phi