Locale:...:IBM868(3)

🌸 Locale::RecodeData::IBM868(3) 🌸

okay so real quick, bestie β€” this page lives in the User Contributed Perl Documentation section of the manual, and its whole government name is Locale::RecodeData::IBM868. It's part of the Locale::... family (yes, the name literally has dots in it, we don't make the rules πŸ’…). Buckle up, there are more parts coming.


✨ NAME ✨

Locale::RecodeData::IBM868 β€” the conversion routines for IBM868. that's it, that's the vibe πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

This module is internal to libintl.  Do not use directly!

okay so this is the most important line on the whole page and I need you to hear me: this module is internal to libintl. Like, it's backstage. It's the crew. Do not use it directly! no cap, hands off πŸ™ˆ


πŸ’– DESCRIPTION πŸ’–

So this module is generated β€” nobody sat there hand-typing it, a machine made it β€” and what it contains is the conversion tables and the routines for IBM868. That's the whole deal, that's what it does ✨


πŸ”₯ COMMENTS πŸ”₯

these are the comments that got extracted straight out of the original charmap, verbatim, so here they are in all their glory:

 version: 1.0
  source: IBM NLS RM Vol2 SE09-8002-01, March 1990
 alias CP868
 alias CP-AR

So yeah β€” version 1.0, and the source is IBM NLS RM Vol2 SE09-8002-01, March 1990. There are two aliases listed: CP868 and CP-AR πŸ‘‘

⚠️ heads up bestie, and this is important: please note that aliases listed above are not necessarily valid! Like, don't just assume they work because they're written there. the manpage said what it said πŸ’€

more parts are coming, don't go anywhere 🫢

so the columns are Local | ISO-10646 | Description, and before you scroll past β€” the manpage itself says this, verbatim, so pls internalize it:

The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'.

Bestie. all hexadecimal. and ISO-10646 in this table means ISO-10646-UCS4, not the other UCS flavours. don't come for me, that's just what it says πŸ’…


the control-character zone (0x00–0x1F) 😭

these are the gremlins. the ones that make your terminal beep and your logs cry. no cap:

  • 00 β†’ 00000000 β€” NULL (NUL)
  • 01 β†’ 00000001 β€” START OF HEADING (SOH)
  • 02 β†’ 00000002 β€” START OF TEXT (STX)
  • 03 β†’ 00000003 β€” END OF TEXT (ETX)
  • 04 β†’ 00000004 β€” END OF TRANSMISSION (EOT)
  • 05 β†’ 00000005 β€” ENQUIRY (ENQ)
  • 06 β†’ 00000006 β€” ACKNOWLEDGE (ACK)
  • 07 β†’ 00000007 β€” BELL (BEL)
  • 08 β†’ 00000008 β€” BACKSPACE (BS)
  • 09 β†’ 00000009 β€” CHARACTER TABULATION (HT)
  • 0A β†’ 0000000A β€” LINE FEED (LF)
  • 0B β†’ 0000000B β€” LINE TABULATION (VT)
  • 0C β†’ 0000000C β€” FORM FEED (FF)
  • 0D β†’ 0000000D β€” CARRIAGE RETURN (CR)
  • 0E β†’ 0000000E β€” SHIFT OUT (SO)
  • 0F β†’ 0000000F β€” SHIFT IN (SI)
  • 10 β†’ 00000010 β€” DATALINK ESCAPE (DLE)
  • 11 β†’ 00000011 β€” DEVICE CONTROL ONE (DC1)
  • 12 β†’ 00000012 β€” DEVICE CONTROL TWO (DC2)
  • 13 β†’ 00000013 β€” DEVICE CONTROL THREE (DC3)
  • 14 β†’ 00000014 β€” DEVICE CONTROL FOUR (DC4)
  • 15 β†’ 00000015 β€” NEGATIVE ACKNOWLEDGE (NAK)
  • 16 β†’ 00000016 β€” SYNCHRONOUS IDLE (SYN)
  • 17 β†’ 00000017 β€” END OF TRANSMISSION BLOCK (ETB)
  • 18 β†’ 00000018 β€” CANCEL (CAN)
  • 19 β†’ 00000019 β€” END OF MEDIUM (EM)
  • 1A β†’ 0000001A β€” SUBSTITUTE (SUB)
  • 1B β†’ 0000001B β€” ESCAPE (ESC)
  • 1C β†’ 0000001C β€” FILE SEPARATOR (IS4)
  • 1D β†’ 0000001D β€” GROUP SEPARATOR (IS3)
  • 1E β†’ 0000001E β€” RECORD SEPARATOR (IS2)
  • 1F β†’ 0000001F β€” UNIT SEPARATOR (IS1)

okay <kbd>0x1B</kbd> is the one that starts every escape sequence you've ever copy-pasted from stack overflow. and 0x07 is the reason your terminal screamed at you in 2019. iconic, honestly πŸŽ€


the ASCII stretch, 1:1, no notes (0x20–0x7F) ✨

these map so cleanly it's almost boring, and that's the point β€” IBM868 keeps the whole ASCII run intact before it starts doing Arabic things:

  • 20 β†’ 00000020 β€” SPACE
  • 21 β†’ 00000021 β€” EXCLAMATION MARK
  • 22 β†’ 00000022 β€” QUOTATION MARK
  • 23 β†’ 00000023 β€” NUMBER SIGN
  • 24 β†’ 00000024 β€” DOLLAR SIGN
  • 25 β†’ 00000025 β€” PERCENT SIGN
  • 26 β†’ 00000026 β€” AMPERSAND
  • 27 β†’ 00000027 β€” APOSTROPHE
  • 28 β†’ 00000028 β€” LEFT PARENTHESIS
  • 29 β†’ 00000029 β€” RIGHT PARENTHESIS
  • 2A β†’ 0000002A β€” ASTERISK
  • 2B β†’ 0000002B β€” PLUS SIGN
  • 2C β†’ 0000002C β€” COMMA
  • 2D β†’ 0000002D β€” HYPHEN-MINUS
  • 2E β†’ 0000002E β€” FULL STOP
  • 2F β†’ 0000002F β€” SOLIDUS
  • 30 β†’ 00000030 β€” DIGIT ZERO
  • 31 β†’ 00000031 β€” DIGIT ONE
  • 32 β†’ 00000032 β€” DIGIT TWO
  • 33 β†’ 00000033 β€” DIGIT THREE
  • 34 β†’ 00000034 β€” DIGIT FOUR
  • 35 β†’ 00000035 β€” DIGIT FIVE
  • 36 β†’ 00000036 β€” DIGIT SIX
  • 37 β†’ 00000037 β€” DIGIT SEVEN
  • 38 β†’ 00000038 β€” DIGIT EIGHT
  • 39 β†’ 00000039 β€” DIGIT NINE
  • 3A β†’ 0000003A β€” COLON
  • 3B β†’ 0000003B β€” SEMICOLON
  • 3C β†’ 0000003C β€” LESS-THAN SIGN
  • 3D β†’ 0000003D β€” EQUALS SIGN
  • 3E β†’ 0000003E β€” GREATER-THAN SIGN
  • 3F β†’ 0000003F β€” QUESTION MARK
  • 40 β†’ 00000040 β€” COMMERCIAL AT
  • 41 β†’ 00000041 β€” LATIN CAPITAL LETTER A
  • 42 β†’ 00000042 β€” LATIN CAPITAL LETTER B
  • 43 β†’ 00000043 β€” LATIN CAPITAL LETTER C
  • 44 β†’ 00000044 β€” LATIN CAPITAL LETTER D
  • 45 β†’ 00000045 β€” LATIN CAPITAL LETTER E
  • 46 β†’ 00000046 β€” LATIN CAPITAL LETTER F
  • 47 β†’ 00000047 β€” LATIN CAPITAL LETTER G
  • 48 β†’ 00000048 β€” LATIN CAPITAL LETTER H
  • 49 β†’ 00000049 β€” LATIN CAPITAL LETTER I
  • 4A β†’ 0000004A β€” LATIN CAPITAL LETTER J
  • 4B β†’ 0000004B β€” LATIN CAPITAL LETTER K
  • 4C β†’ 0000004C β€” LATIN CAPITAL LETTER L
  • 4D β†’ 0000004D β€” LATIN CAPITAL LETTER M
  • 4E β†’ 0000004E β€” LATIN CAPITAL LETTER N
  • 4F β†’ 0000004F β€” LATIN CAPITAL LETTER O
  • 50 β†’ 00000050 β€” LATIN CAPITAL LETTER P
  • 51 β†’ 00000051 β€” LATIN CAPITAL LETTER Q
  • 52 β†’ 00000052 β€” LATIN CAPITAL LETTER R
  • 53 β†’ 00000053 β€” LATIN CAPITAL LETTER S
  • 54 β†’ 00000054 β€” LATIN CAPITAL LETTER T
  • 55 β†’ 00000055 β€” LATIN CAPITAL LETTER U
  • 56 β†’ 00000056 β€” LATIN CAPITAL LETTER V
  • 57 β†’ 00000057 β€” LATIN CAPITAL LETTER W
  • 58 β†’ 00000058 β€” LATIN CAPITAL LETTER X
  • 59 β†’ 00000059 β€” LATIN CAPITAL LETTER Y
  • 5A β†’ 0000005A β€” LATIN CAPITAL LETTER Z
  • 5B β†’ 0000005B β€” LEFT SQUARE BRACKET
  • 5C β†’ 0000005C β€” REVERSE SOLIDUS
  • 5D β†’ 0000005D β€” RIGHT SQUARE BRACKET
  • 5E β†’ 0000005E β€” CIRCUMFLEX ACCENT
  • 5F β†’ 0000005F β€” LOW LINE
  • 60 β†’ 00000060 β€” GRAVE ACCENT
  • 61 β†’ 00000061 β€” LATIN SMALL LETTER A
  • 62 β†’ 00000062 β€” LATIN SMALL LETTER B
  • 63 β†’ 00000063 β€” LATIN SMALL LETTER C
  • 64 β†’ 00000064 β€” LATIN SMALL LETTER D
  • 65 β†’ 00000065 β€” LATIN SMALL LETTER E
  • 66 β†’ 00000066 β€” LATIN SMALL LETTER F
  • 67 β†’ 00000067 β€” LATIN SMALL LETTER G
  • 68 β†’ 00000068 β€” LATIN SMALL LETTER H
  • 69 β†’ 00000069 β€” LATIN SMALL LETTER I
  • 6A β†’ 0000006A β€” LATIN SMALL LETTER J
  • 6B β†’ 0000006B β€” LATIN SMALL LETTER K
  • 6C β†’ 0000006C β€” LATIN SMALL LETTER L
  • 6D β†’ 0000006D β€” LATIN SMALL LETTER M
  • 6E β†’ 0000006E β€” LATIN SMALL LETTER N
  • 6F β†’ 0000006F β€” LATIN SMALL LETTER O
  • 70 β†’ 00000070 β€” LATIN SMALL LETTER P
  • 71 β†’ 00000071 β€” LATIN SMALL LETTER Q
  • 72 β†’ 00000072 β€” LATIN SMALL LETTER R
  • 73 β†’ 00000073 β€” LATIN SMALL LETTER S
  • 74 β†’ 00000074 β€” LATIN SMALL LETTER T
  • 75 β†’ 00000075 β€” LATIN SMALL LETTER U
  • 76 β†’ 00000076 β€” LATIN SMALL LETTER V
  • 77 β†’ 00000077 β€” LATIN SMALL LETTER W
  • 78 β†’ 00000078 β€” LATIN SMALL LETTER X
  • 79 β†’ 00000079 β€” LATIN SMALL LETTER Y
  • 7A β†’ 0000007A β€” LATIN SMALL LETTER Z
  • 7B β†’ 0000007B β€” LEFT CURLY BRACKET
  • 7C β†’ 0000007C β€” VERTICAL LINE
  • 7D β†’ 0000007D β€” RIGHT CURLY BRACKET
  • 7E β†’ 0000007E β€” TILDE
  • 7F β†’ 0000007F β€” DELETE (DEL)

see? 41 is 00000041 is A. 7A is 0000007A is z. no crumbs left behind, the whole run is preserved 🫢


and now the actual plot twist β€” the high half (0x80–0xFF) πŸ”₯

this is where IBM868 stops being ASCII and starts being Arabic, plus a truly unhinged amount of box-drawing and shade blocks because 1980s codepages were built different. also heads up: the local codes skip around β€” 94, 98, 99, 9E, 9F, A5, A8, AA, E0, E2, E8, EB, ED–F0, F3–FA and FD just aren't in this charmap. that's the charmap being the charmap, not me being lazy πŸ’€

  • 80 β†’ 00000660 β€” ARABIC-INDIC DIGIT ZERO
  • 81 β†’ 00000661 β€” ARABIC-INDIC DIGIT ONE
  • 82 β†’ 00000662 β€” ARABIC-INDIC DIGIT TWO
  • 83 β†’ 00000663 β€” ARABIC-INDIC DIGIT THREE
  • 84 β†’ 00000664 β€” ARABIC-INDIC DIGIT FOUR
  • 85 β†’ 00000665 β€” ARABIC-INDIC DIGIT FIVE
  • 86 β†’ 00000666 β€” ARABIC-INDIC DIGIT SIX
  • 87 β†’ 00000667 β€” ARABIC-INDIC DIGIT SEVEN
  • 88 β†’ 00000668 β€” ARABIC-INDIC DIGIT EIGHT
  • 89 β†’ 00000669 β€” ARABIC-INDIC DIGIT NINE
  • 8A β†’ 0000060C β€” ARABIC COMMA
  • 8B β†’ 0000061B β€” ARABIC SEMICOLON
  • 8C β†’ 0000061F β€” ARABIC QUESTION MARK
  • 8D β†’ 00000622 β€” ARABIC LETTER ALEF WITH MADDA ABOVE
  • 8E β†’ 00000627 β€” ARABIC LETTER ALEF
  • 8F β†’ 0000FE8E β€” ARABIC LETTER ALEF FINAL FORM
  • 90 β†’ 0000E016 β€” ARABIC LETTER ALEF FINAL FORM COMPATIBILITY E<lt>IBM868_90E<gt>
  • 91 β†’ 00000628 β€” ARABIC LETTER BEH
  • 92 β†’ 0000FE91 β€” ARABIC LETTER BEH INITIAL FORM
  • 93 β†’ 0000067E β€” ARABIC LETTER PEH
  • 95 β†’ 00000629 β€” ARABIC LETTER TEH MARBUTA
  • 96 β†’ 0000062A β€” ARABIC LETTER TEH
  • 97 β†’ 0000FE97 β€” ARABIC LETTER TEH INITIAL FORM
  • 9A β†’ 0000062B β€” ARABIC LETTER THEH
  • 9B β†’ 0000FE9B β€” ARABIC LETTER THEH INITIAL FORM
  • 9C β†’ 0000062C β€” ARABIC LETTER JEEM
  • 9D β†’ 0000FE9F β€” ARABIC LETTER JEEM INITIAL FORM
  • A0 β†’ 0000062D β€” ARABIC LETTER HAH
  • A1 β†’ 0000FEA3 β€” ARABIC LETTER HAH INITIAL FORM
  • A2 β†’ 0000062E β€” ARABIC LETTER KHAH
  • A3 β†’ 0000FEA7 β€” ARABIC LETTER KHAH INITIAL FORM
  • A4 β†’ 0000062F β€” ARABIC LETTER DAL
  • A6 β†’ 00000630 β€” ARABIC LETTER THAL
  • A7 β†’ 00000631 β€” ARABIC LETTER REH
  • A9 β†’ 00000632 β€” ARABIC LETTER ZAIN
  • AB β†’ 00000633 β€” ARABIC LETTER SEEN
  • AC β†’ 0000FEB3 β€” ARABIC LETTER SEEN INITIAL FORM
  • AD β†’ 00000634 β€” ARABIC LETTER SHEEN
  • AE β†’ 000000AB β€” LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
  • AF β†’ 000000BB β€” RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
  • B0 β†’ 0000FEB7 β€” ARABIC LETTER SHEEN INITIAL FORM
  • B1 β†’ 00000635 β€” ARABIC LETTER SAD
  • B2 β†’ 00002591 β€” LIGHT SHADE
  • B3 β†’ 00002592 β€” MEDIUM SHADE
  • B4 β†’ 00002593 β€” DARK SHADE
  • B5 β†’ 00002502 β€” BOX DRAWINGS LIGHT VERTICAL
  • B6 β†’ 00002524 β€” BOX DRAWINGS LIGHT VERTICAL AND LEFT
  • B7 β†’ 0000FEBB β€” ARABIC LETTER SAD INITIAL FORM
  • B8 β†’ 00000636 β€” ARABIC LETTER DAD
  • B9 β†’ 0000FEBF β€” ARABIC LETTER DAD INITIAL FORM
  • BA β†’ 00000637 β€” ARABIC LETTER TAH
  • BB β†’ 00002563 β€” BOX DRAWINGS DOUBLE VERTICAL AND LEFT
  • BC β†’ 00002551 β€” BOX DRAWINGS DOUBLE VERTICAL
  • BD β†’ 00002557 β€” BOX DRAWINGS DOUBLE DOWN AND LEFT
  • BE β†’ 0000255D β€” BOX DRAWINGS DOUBLE UP AND LEFT
  • BF β†’ 00000638 β€” ARABIC LETTER ZAH
  • C0 β†’ 00000639 β€” ARABIC LETTER AIN
  • C1 β†’ 00002510 β€” BOX DRAWINGS LIGHT DOWN AND LEFT
  • C2 β†’ 00002514 β€” BOX DRAWINGS LIGHT UP AND RIGHT
  • C3 β†’ 00002534 β€” BOX DRAWINGS LIGHT UP AND HORIZONTAL
  • C4 β†’ 0000252C β€” BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
  • C5 β†’ 0000251C β€” BOX DRAWINGS LIGHT VERTICAL AND RIGHT
  • C6 β†’ 00002500 β€” BOX DRAWINGS LIGHT HORIZONTAL
  • C7 β†’ 0000253C β€” BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
  • C8 β†’ 0000FECA β€” ARABIC LETTER AIN FINAL FORM
  • C9 β†’ 0000FECB β€” ARABIC LETTER AIN INITIAL FORM
  • CA β†’ 0000255A β€” BOX DRAWINGS DOUBLE UP AND RIGHT
  • CB β†’ 00002554 β€” BOX DRAWINGS DOUBLE DOWN AND RIGHT
  • CC β†’ 00002569 β€” BOX DRAWINGS DOUBLE UP AND HORIZONTAL
  • CD β†’ 00002566 β€” BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
  • CE β†’ 00002560 β€” BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
  • CF β†’ 00002550 β€” BOX DRAWINGS DOUBLE HORIZONTAL
  • D0 β†’ 0000256C β€” BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
  • D1 β†’ 0000FECC β€” ARABIC LETTER AIN MEDIAL FORM
  • D2 β†’ 0000063A β€” ARABIC LETTER GHAIN
  • D3 β†’ 0000FECE β€” ARABIC LETTER GHAIN FINAL FORM
  • D4 β†’ 0000FECF β€” ARABIC LETTER GHAIN INITIAL FORM
  • D5 β†’ 0000FED0 β€” ARABIC LETTER GHAIN MEDIAL FORM
  • D6 β†’ 00000641 β€” ARABIC LETTER FEH
  • D7 β†’ 0000FED3 β€” ARABIC LETTER FEH INITIAL FORM
  • D8 β†’ 00000642 β€” ARABIC LETTER QAF
  • D9 β†’ 0000FED7 β€” ARABIC LETTER QAF INITIAL FORM
  • DA β†’ 0000FEDA β€” ARABIC LETTER KAF FINAL FORM
  • DB β†’ 00002518 β€” BOX DRAWINGS LIGHT UP AND LEFT
  • DC β†’ 0000250C β€” BOX DRAWINGS LIGHT DOWN AND RIGHT
  • DD β†’ 00002588 β€” FULL BLOCK
  • DE β†’ 00002580 β€” UPPER HALF BLOCK
  • DF β†’ 0000FEDB β€” ARABIC LETTER KAF INITIAL FORM
  • E1 β†’ 00002584 β€” LOWER HALF BLOCK
  • E3 β†’ 00000644 β€” ARABIC LETTER LAM
  • E4 β†’ 0000FEDE β€” ARABIC LETTER LAM FINAL FORM
  • E5 β†’ 0000FEE0 β€” ARABIC LETTER LAM MEDIAL FORM
  • E6 β†’ 00000645 β€” ARABIC LETTER MEEM
  • E7 β†’ 0000FEE3 β€” ARABIC LETTER MEEM INITIAL FORM
  • E9 β†’ 00000646 β€” ARABIC LETTER NOON
  • EA β†’ 0000FEE7 β€” ARABIC LETTER NOON INITIAL FORM
  • EC β†’ 00000648 β€” ARABIC LETTER WAW
  • F1 β†’ 00000621 β€” ARABIC LETTER HAMZA
  • F2 β†’ 000000AD β€” SOFT HYPHEN
  • FB β†’ 00000651 β€” ARABIC SHADDA
  • FC β†’ 0000FE7D β€” ARABIC SHADDA MEDIAL FORM
  • FE β†’ 000025A0 β€” BLACK SQUARE
  • FF β†’ 000000A0 β€” NO-BREAK SPACE

a few faves from this half, not gonna lie:

  • <pink>the presentation forms</pink> β€” all those FE.. codes like FE8E, FE91, FEB3, FEE7 are the shaped versions of the letters (FINAL FORM, INITIAL FORM, MEDIAL FORM). the base letters live in the 06.. range. so 8E gives you 00000627 (plain ALEF) and 8F gives you 0000FE8E (ALEF FINAL FORM). that distinction is real and it matters, bestie, don't flatten them 🧚
  • <purple>``90 is the weird one</purple> β€” 0000E016 with the note ARABIC LETTER ALEF FINAL FORM COMPATIBILITY E<lt>IBM868_90E<gt>. that E<lt>/E<gt> is exactly how it's written here, it's a pod escape thing, and yes it's staying exactly like that because I don't break the source πŸ’…
  • <mint>box drawing central</mint> β€” B5–D0 and DB–E1 are basically a whole TUI framework hiding in your codepage. DD is 00002588 FULL BLOCK. C6 is 00002500 BOX DRAWINGS LIGHT HORIZONTAL. if you've ever drawn a menu in a 1988 terminal, this is the palette πŸŽ€
  • <yellow>shades </yellow> β€” B2, B3, B4 are 00002591 / 00002592 / 00002593, i.e. LIGHT, MEDIUM and DARK SHADE. gradients before gradients were a thing πŸ”₯
  • <lavender>punct guests</lavender> β€” AE and AF are 000000AB and 000000BB, the angle quotation marks. F2 is 000000AD SOFT HYPHEN, and FF is 000000A0 NO-BREAK SPACE. two plain old Latin-1-ish oddballs chilling in the Arabic block, living their best life ✨
reminder bestie: ISO-10646 here = ISO-10646-UCS4. and every number in this table is hexadecimal. write 0xFF, not 255, when you're talking to this page πŸ™ˆ

πŸ’– AUTHOR πŸ’–

Okay so this whole thing? Written by an actual human, no cap:

And bestie, listen β€” if you want the actual deets, the manpage says straight up: See the source code for details!code for details! ✨ (yes, that's literally how it's printed in the page β€” the code for details! bit is doubled up in the original, and honestly? iconic of a manpage that has seen things. iykyk. we leave it exactly as it stands, no cap.)


πŸ¦‹ SEE ALSO πŸ¦‹

Go touch these next, they're the whole friend group:


lowkey reminder: none of the flags or behaviour on this page are invented by me β€” everything above comes straight from the page itself, typos and all, periodt. πŸ’€

that's the whole page, bestie!! 🌸 you just read the entire Locale::...:IBM868(3) situation β€” part three, done and dusted, ate and left no crumbs.

little sign-off moment πŸŽ€ β€” this page ships from perl v5.42.0, dated 2025-01-22, and the footer stamps it as Locale:...:IBM868(3) β€” the IBM868 recode data page in the Perl v5.42.0 docs, one last time because she deserves her flowers. πŸ’

go forth and recode, queen πŸ‘‘βœ¨πŸ’œ