-
Notifications
You must be signed in to change notification settings - Fork 0
Character Sets
A short overview of character sets, intended to document the characters provided, what not to print, etc.
Despite Unicode becoming increasingly common, Code Page 437 is by far the most common charset for BBSes. A character from IBM437 is represented as a single byte.
- Aliases: IBM437, CP437, 437, OEM-US, OEM 437, PC-8, DOS Latin US
Code Page 437
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│ │_0 │_1 │_2 │_3 │_4 │_5 │_6 │_7 │_8 │_9 │_A │_B │_C │_D │_E │_F │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 0_│NUL│ ☺ │ ☻ │ ♥ │ ♦ │ ♣ │ ♠ │ • │ ◘ │ ○ │ ◙ │ ♂ │ ♀ │ ♫ │ ♫ │ ☼ │
│ │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │10 │11 │12 │13 │14 │15 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 1_│ ► │ ◄ │ ↕ │ ‼ │ ¶ │ § │ ▬ │ ↨ │ ↑ │ ↓ │ → │ ← │ ∟ │ ↔ │ ▲ │ ▼ │
│ │16 │17 │18 │19 │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │30 │31 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 2_│SP │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │ * │ + │ , │ - │ . │ / │
│ │32 │33 │34 │35 │36 │37 │38 │39 │40 │41 │42 │43 │44 │45 │46 │47 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 3_│ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ : │ ; │ < │ = │ > │ ? │
│ │48 │49 │50 │51 │52 │53 │54 │55 │56 │57 │58 │59 │60 │61 │62 │63 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 4_│ @ │ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ K │ L │ M │ N │ O │
│ │64 │65 │66 │67 │68 │69 │70 │71 │72 │73 │74 │75 │76 │77 │78 │79 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 5_│ P │ Q │ R │ S │ T │ U │ V │ W │ X │ Y │ Z │ [ │ \ │ ] │ ^ │ _ │
│ │80 │81 │82 │83 │84 │85 │86 │87 │88 │89 │90 │91 │92 │93 │94 │95 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 6_│ ` │ a │ b │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │ m │ n │ o │
│ │96 │97 │98 │99 │100│101│102│103│104│105│106│107│108│109│110│111│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 7_│ p │ q │ r │ s │ t │ u │ v │ w │ x │ y │ z │ { │ | │ } │ ~ │ ⌂ │
│ │112│113│114│115│116│117│118│119│120│121│122│123│124│125│126│127│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 8_│ Ç │ ü │ é │ â │ ä │ à │ å │ ç │ ê │ ë │ è │ ï │ î │ ì │ Ä │ Å │
│ │128│129│130│131│132│133│134│135│136│137│138│139│140│141│142│143│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ 9_│ É │ æ │ Æ │ ô │ ö │ ò │ û │ ù │ ÿ │ Ö │ Ü │ ¢ │ £ │ ¥ │ ₧ │ ƒ │
│ │144│145│146│147│148│149│150│151│152│153│154│155│156│157│158│159│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ A_│ á │ í │ ó │ ú │ ñ │ Ñ │ ª │ º │ ¿ │ ⌐ │ ¬ │ ½ │ ¼ │ ¡ │ « │ » │
│ │160│161│162│163│164│165│166│167│168│169│170│171│172│173│174│175│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ B_│ ░ │ ▒ │ ▓ │ │ │ ┤ │ ╡ │ ╢ │ ╖ │ ╕ │ ╣ │ ║ │ ╗ │ ╝ │ ╜ │ ╛ │ ┐ │
│ │176│177│178│179│180│181│182│183│184│185│186│187│188│189│190│191│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ C_│ └ │ ┴ │ ┬ │ ├ │ ─ │ ┼ │ ╞ │ ╟ │ ╚ │ ╔ │ ╩ │ ╦ │ ╠ │ ═ │ ╬ │ ╧ │
│ │192│193│194│195│196│197│198│199│200│201│202│203│204│205│206│207│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ D_│ ╨ │ ╤ │ ╥ │ ╙ │ ╘ │ ╒ │ ╓ │ ╫ │ ╪ │ ┘ │ ┌ │ █ │ ▄ │ ▌ │ ▐ │ ▀ │
│ │208│209│210│211│212│213│214│215│216│217│218│219│220│221│222│223│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ E_│ α │ ß │ Γ │ π │ Σ │ σ │ µ │ τ │ Φ │ Θ │ Ω │ δ │ ∞ │ φ │ ε │ ∩ │
│ │224│225│226│227│228│229│230│231│232│233│234│235│236│237│238│239│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ F_│ ≡ │ ± │ ≥ │ ≤ │ ⌠ │ ⌡ │ ÷ │ ≈ │ ° │ ∙ │ · │ √ │ ⁿ │ ² │ ■ │NBS│
│ │240│241│242│243│244│245│246│247│248│249│250│251│252│253│254│255│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
Special characters (some software will not print these)
┌───┬───┬───────────────────────────────────────────────────────────┐
│DEC│CHR│Description │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 0 │NUL│ NUL (Null) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 1 │ ☺ │ SOH (Start of Header) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 2 │ ☻ │ STX (Start of Text) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 3 │ ♥ │ ETX (End of Text) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 4 │ ♦ │ EOT (End of Transmission) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 5 │ ♣ │ ENQ (Enquiry) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 6 │ ♠ │ ACK (Acknowledge) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 7 │ • │ BEL (Bell) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 8 │ ◘ │ BS (BackSpace) │
├───┼───┼───────────────────────────────────────────────────────────┤
│ 9 │ ○ │ HT (Horizontal Tabulation) │
├───┼───┼───────────────────────────────────────────────────────────┤
│10 │ ◙ │ LF (Line Feed) │
├───┼───┼───────────────────────────────────────────────────────────┤
│11 │ ♂ │ VT (Vertical Tabulation) │
├───┼───┼───────────────────────────────────────────────────────────┤
│12 │ ♀ │ FF (Form Feed) │
├───┼───┼───────────────────────────────────────────────────────────┤
│13 │ ♫ │ CR (Carriage Return) │
├───┼───┼───────────────────────────────────────────────────────────┤
│14 │ ♫ │ SO (Shift Out) │
├───┼───┼───────────────────────────────────────────────────────────┤
│15 │ ☼ │ SI (Shift In) │
├───┼───┼───────────────────────────────────────────────────────────┤
│16 │ ► │ DLE (Data Link Escape) │
├───┼───┼───────────────────────────────────────────────────────────┤
│17 │ ◄ │ DC1 (Device Control 1) │
├───┼───┼───────────────────────────────────────────────────────────┤
│18 │ ↕ │ DC2 (Device Control 2) │
├───┼───┼───────────────────────────────────────────────────────────┤
│19 │ ‼ │ DC3 (Device Control 3) │
├───┼───┼───────────────────────────────────────────────────────────┤
│20 │ ¶ │ DC4 (Device Control 4) │
├───┼───┼───────────────────────────────────────────────────────────┤
│21 │ § │ NAK (Negative Acknowledge) │
├───┼───┼───────────────────────────────────────────────────────────┤
│22 │ ▬ │ SYN (Synchronous Idle) │
├───┼───┼───────────────────────────────────────────────────────────┤
│23 │ ↨ │ ETB (End of Transmission Block) │
├───┼───┼───────────────────────────────────────────────────────────┤
│24 │ ↑ │ CAN (Cancel) │
├───┼───┼───────────────────────────────────────────────────────────┤
│25 │ ↓ │ EM (End of Medium) │
├───┼───┼───────────────────────────────────────────────────────────┤
│26 │ → │ SUB (Substitute) │
├───┼───┼───────────────────────────────────────────────────────────┤
│27 │ ← │ ESC (Escape) │
├───┼───┼───────────────────────────────────────────────────────────┤
│28 │ ∟ │ FS (File Separator) │
├───┼───┼───────────────────────────────────────────────────────────┤
│29 │ ↔ │ GS (Group Separator) │
├───┼───┼───────────────────────────────────────────────────────────┤
│30 │ ▲ │ RS (Record Separator) │
├───┼───┼───────────────────────────────────────────────────────────┤
│31 │ ▼ │ US (Unit Separator) │
├───┼───┼───────────────────────────────────────────────────────────┤
│255│NBS│ NBSP (Non Breaking Space) │
└───┴───┴───────────────────────────────────────────────────────────┘
It is worth noting that characters in the range of 0-31 are known as C1 Control Characters and are normally not printable due to serving other purposes, or they represent special actions rather than explicit characters. For example, VT it actually represents a Vertical Tab when printed, or the TAB key on a keyboard.
A hack that can be used to print these as literal characters (ex "♂" instead of $TAB when sending TAB), is to enable Doorway mode. Doorway mode has the effect of treating almost most characters literally, not inprepreting most of the C0 control characters.
Alternatively, if unicode is supported by the software, I recommend using that instead since doorway mode is poorly documented and has various caveats associated with it.
tbd.
The standards outlined here shall be used in all wiki pages for this project. They exist to improve readability and make it easier to understand the requirements for certain sequences, commands and arguments.
NOTE: Unless marked as literal, spaces are not to be taken literally, and are only there to improve readability.
- Escaping:
\arg
(read asarg
) - Optional argument:
[arg]
- Required argument:
<arg>
- Default value:
{arg}
- Miscellaneous info:
(arg)
- Multiple arguments can be supplied:
arg...
- Literal
"arg"
orarg
- Acronym or predefined value
$arg
- For example
$ESC
refers to character 27, "escape". - See predefined values.
- For example
-
%d
: Single numeric only. -
%a
: Single alphanumeric character only. -
%l
: Single letter only. -
%s
: String (any length unless specified otherwise in a custom condition). -
%(<custom condition>)
: Custom condition(s). -
...
can be suffixed to indicate that any amount greater than 0 is accepted
- Specify a custom length:
%a(length 1-5)
- Specify a custom range:
%a(range 9-1005)
More values can be defined in each wiki page, these are just some common ones. Additional values are usually at the bottom of said pages, or explained in tables with acronyms. Uppercase letters are not required, but strongly recommended. If uppercase is not suitable then CamelCase is another option.
-
$ESC
: "Escape", character 27. -
$CSI
: Control Sequence Inducer, AKA$ESC\[
-
$SP
: "Space", character 32.