Locale:...:IBM871(3)

πŸ’… Locale::RecodeData::IBM871 β€” like, the whole vibe ✨

Okay bestie, so this is IBM871(3) from the User Contributed Perl Documentation (yes, the perl one, section 3, iykyk) 🫢 β€” and it's literally the conversion-routine page for IBM871. Buckle up.


🌸 NAME 🌸

Locale::RecodeData::IBM871 β€” conversion routines for IBM871. That's it, that's the whole name, slay πŸ’…


✨ SYNOPSIS ✨

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

Okay so real talk: this module is internal to libintl, and the manpage is screaming do NOT use it directly 😭 like it's not a suggestion, bestie, it's a warning. Hands off. No cap.


πŸ¦‹ DESCRIPTION πŸ¦‹

So this module is generated (not hand-written, it's giving autogenerated icon energy ✨) and it contains the conversion tables and routines for IBM871. That's the whole thing. Tables + routines. Periodt.


πŸŽ€ COMMENTS πŸŽ€

These comments got extracted straight out of the original charmap β€” like, receipts, fr fr πŸ‘‘

version: 1.0
 source: IBM NLS RM Vol2 SE09-8002-01, March 1990
alias CP871
alias EBCDIC-CP-IS

So we got version: 1.0, the source is IBM NLS RM Vol2 SE09-8002-01, March 1990, and there are two aliases: CP871 and EBCDIC-CP-IS.

⚠️ And bestie, listen β€” the manpage literally says: "Please note that aliases listed above are not necessarily valid!" So like… those aliases might not actually work. Do not come for me if they don't. πŸ’€ It's giving "trust issues" and honestly? Same.

πŸ”₯ CHARACTER TABLE πŸ”₯

Heads up before we go any further, the following table is sorted in the same order as the original charmap. Every single character code is in hexadecimal (hex girl summer πŸ’…), and please read ISO-10646 as ISO-10646-UCS4 β€” that's the mapping, okay? Don't @ me, it's in the source. 🌈

🧚 The actual table drops in the next part, so don't go anywhere β€” we're so not done yet πŸ’–

okay bestie we're jumping in mid-table, no recap needed, just vibes and hex πŸ’… the table's got three columns β€” Local (the IBM871 code point), ISO-10646 (the Unicode code point it maps to), and a Description that spells it out β€” and we're picking up right where we left off. First up: the control-character district, where everything is deeply unhinged and lowkey kind of iconic πŸŽ€

        Local | ISO-10646 | Description
       -------+-----------+-------------------------------------------------
           00 |  00000000 | NULL (NUL)
           01 |  00000001 | START OF HEADING (SOH)
           02 |  00000002 | START OF TEXT (STX)
           03 |  00000003 | END OF TEXT (ETX)
           04 |  0000009C | STRING TERMINATOR (ST)
           05 |  00000009 | CHARACTER TABULATION (HT)
           06 |  00000086 | START OF SELECTED AREA (SSA)
           07 |  0000007F | DELETE (DEL)
           08 |  00000097 | END OF GUARDED AREA (EPA)
           09 |  0000008D | REVERSE LINE FEED (RI)
           0A |  0000008E | SINGLE-SHIFT TWO (SS2)
           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 |  0000009D | OPERATING SYSTEM COMMAND (OSC)
           15 |  00000085 | NEXT LINE (NEL)
           16 |  00000008 | BACKSPACE (BS)
           17 |  00000087 | END OF SELECTED AREA (ESA)
           18 |  00000018 | CANCEL (CAN)
           19 |  00000019 | END OF MEDIUM (EM)
           1A |  00000092 | PRIVATE USE TWO (PU2)
           1B |  0000008F | SINGLE-SHIFT THREE (SS3)
           1C |  0000001C | FILE SEPARATOR (IS4)
           1D |  0000001D | GROUP SEPARATOR (IS3)
           1E |  0000001E | RECORD SEPARATOR (IS2)
           1F |  0000001F | UNIT SEPARATOR (IS1)
           20 |  00000080 | PADDING CHARACTER (PAD)
           21 |  00000081 | HIGH OCTET PRESET (HOP)
           22 |  00000082 | BREAK PERMITTED HERE (BPH)
           23 |  00000083 | NO BREAK HERE (NBH)
           24 |  00000084 | INDEX (IND)
           25 |  0000000A | LINE FEED (LF)
           26 |  00000017 | END OF TRANSMISSION BLOCK (ETB)
           27 |  0000001B | ESCAPE (ESC)
           28 |  00000088 | CHARACTER TABULATION SET (HTS)
           29 |  00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
           2A |  0000008A | LINE TABULATION SET (VTS)
           2B |  0000008B | PARTIAL LINE FORWARD (PLD)
           2C |  0000008C | PARTIAL LINE BACKWARD (PLU)
           2D |  00000005 | ENQUIRY (ENQ)
           2E |  00000006 | ACKNOWLEDGE (ACK)
           2F |  00000007 | BELL (BEL)
           30 |  00000090 | DEVICE CONTROL STRING (DCS)
           31 |  00000091 | PRIVATE USE ONE (PU1)
           32 |  00000016 | SYNCHRONOUS IDLE (SYN)
           33 |  00000093 | SET TRANSMIT STATE (STS)
           34 |  00000094 | CANCEL CHARACTER (CCH)
           35 |  00000095 | MESSAGE WAITING (MW)
           36 |  00000096 | START OF GUARDED AREA (SPA)
           37 |  00000004 | END OF TRANSMISSION (EOT)
           38 |  00000098 | START OF STRING (SOS)
           39 |  00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
           3A |  0000009A | SINGLE CHARACTER INTRODUCER (SCI)
           3B |  0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
           3C |  00000014 | DEVICE CONTROL FOUR (DC4)
           3D |  00000015 | NEGATIVE ACKNOWLEDGE (NAK)
           3E |  0000009E | PRIVACY MESSAGE (PM)
           3F |  0000001A | SUBSTITUTE (SUB)

okay so real talk, this whole first block is giving "haunted telephone switchboard" 😭 like local 05 is your actual tab (CHARACTER TABULATION (HT)) landing at 00000009, local 25 is LINE FEED (LF) at 0000000A, local 16 is BACKSPACE (BS) at 00000008 β€” the hits! and then 07 is straight up DELETE (DEL) mapping to 0000007F, which is so on brand for a chaotic delete button. 2F is BELL (BEL) at 00000007 so yes, this table can absolutely make your terminal scream at you πŸ’€ and 3B is CONTROL SEQUENCE INTRODUCER (CSI) at 0000009B β€” the ESC-adjacent main character, iykyk. also shoutout 27 ESCAPE (ESC) 0000001B, the one everyone knows.


next chunk! this is where the symbols show up and it gets so much more legible ✨ punctuation, letters, the whole little alphabet era πŸ¦‹

           40 |  00000020 | SPACE
           41 |  000000A0 | NO-BREAK SPACE
           42 |  000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
           43 |  000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
           44 |  000000E0 | LATIN SMALL LETTER A WITH GRAVE
           45 |  000000E1 | LATIN SMALL LETTER A WITH ACUTE
           46 |  000000E3 | LATIN SMALL LETTER A WITH TILDE
           47 |  000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
           48 |  000000E7 | LATIN SMALL LETTER C WITH CEDILLA
           49 |  000000F1 | LATIN SMALL LETTER N WITH TILDE
           4A |  000000FE | LATIN SMALL LETTER THORN (Icelandic)
           4B |  0000002E | FULL STOP
           4C |  0000003C | LESS-THAN SIGN
           4D |  00000028 | LEFT PARENTHESIS
           4E |  0000002B | PLUS SIGN
           4F |  00000021 | EXCLAMATION MARK
           50 |  00000026 | AMPERSAND
           51 |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
           52 |  000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
           53 |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
           54 |  000000E8 | LATIN SMALL LETTER E WITH GRAVE
           55 |  000000ED | LATIN SMALL LETTER I WITH ACUTE
           56 |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
           57 |  000000EF | LATIN SMALL LETTER I WITH DIAERESIS
           58 |  000000EC | LATIN SMALL LETTER I WITH GRAVE
           59 |  000000DF | LATIN SMALL LETTER SHARP S (German)
           5A |  000000C6 | LATIN CAPITAL LETTER AE
           5B |  00000024 | DOLLAR SIGN
           5C |  0000002A | ASTERISK
           5D |  00000029 | RIGHT PARENTHESIS
           5E |  0000003B | SEMICOLON
           5F |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           60 |  0000002D | HYPHEN-MINUS
           61 |  0000002F | SOLIDUS
           62 |  000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
           63 |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           64 |  000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
           65 |  000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
           66 |  000000C3 | LATIN CAPITAL LETTER A WITH TILDE
           67 |  000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
           68 |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           69 |  000000D1 | LATIN CAPITAL LETTER N WITH TILDE
           6A |  000000A6 | BROKEN BAR
           6B |  0000002C | COMMA
           6C |  00000025 | PERCENT SIGN
           6D |  0000005F | LOW LINE
           6E |  0000003E | GREATER-THAN SIGN
           6F |  0000003F | QUESTION MARK
           70 |  000000F8 | LATIN SMALL LETTER O WITH STROKE
           71 |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           72 |  000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
           73 |  000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
           74 |  000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
           75 |  000000CD | LATIN CAPITAL LETTER I WITH ACUTE
           76 |  000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
           77 |  000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
           78 |  000000CC | LATIN CAPITAL LETTER I WITH GRAVE
           79 |  000000F0 | LATIN SMALL LETTER ETH (Icelandic)
           7A |  0000003A | COLON
           7B |  00000023 | NUMBER SIGN
           7C |  000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
           7D |  00000027 | APOSTROPHE
           7E |  0000003D | EQUALS SIGN
           7F |  00000022 | QUOTATION MARK

not 61 being SOLIDUS at 0000002F (that's a slash, bestie, that's your /), and 60 being HYPHEN-MINUS at 0000002D β€” the whole - and / duo is here and accounted for 🫢 also 7B NUMBER SIGN at 00000023 which is the #, periodt. and omg the accents, she's French, she's German (59 LATIN SMALL LETTER SHARP S (German) at 000000DF), she's Icelandic twice over (4A LATIN SMALL LETTER THORN (Icelandic) and 7C LATIN CAPITAL LETTER ETH (Icelandic)) β€” this block ate and left no crumbs πŸ’–


moving along to the high half! 🌸 this is the chunk with brackets, currency, and like… math. very ✨elevated✨ energy:

           80 |  000000D8 | LATIN CAPITAL LETTER O WITH STROKE
           81 |  00000061 | LATIN SMALL LETTER A
           82 |  00000062 | LATIN SMALL LETTER B
           83 |  00000063 | LATIN SMALL LETTER C
           84 |  00000064 | LATIN SMALL LETTER D
           85 |  00000065 | LATIN SMALL LETTER E
           86 |  00000066 | LATIN SMALL LETTER F
           87 |  00000067 | LATIN SMALL LETTER G
           88 |  00000068 | LATIN SMALL LETTER H
           89 |  00000069 | LATIN SMALL LETTER I
           8A |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           8B |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           8C |  00000060 | GRAVE ACCENT
           8D |  000000FD | LATIN SMALL LETTER Y WITH ACUTE
           8E |  0000007B | LEFT CURLY BRACKET
           8F |  000000B1 | PLUS-MINUS SIGN
           90 |  000000B0 | DEGREE SIGN
           91 |  0000006A | LATIN SMALL LETTER J
           92 |  0000006B | LATIN SMALL LETTER K
           93 |  0000006C | LATIN SMALL LETTER L
           94 |  0000006D | LATIN SMALL LETTER M
           95 |  0000006E | LATIN SMALL LETTER N
           96 |  0000006F | LATIN SMALL LETTER O
           97 |  00000070 | LATIN SMALL LETTER P
           98 |  00000071 | LATIN SMALL LETTER Q
           99 |  00000072 | LATIN SMALL LETTER R
           9A |  000000AA | FEMININE ORDINAL INDICATOR
           9B |  000000BA | MASCULINE ORDINAL INDICATOR
           9C |  0000007D | RIGHT CURLY BRACKET
           9D |  000000B8 | CEDILLA
           9E |  0000005D | RIGHT SQUARE BRACKET
           9F |  000000A4 | CURRENCY SIGN
           A0 |  000000B5 | MICRO SIGN
           A1 |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           A2 |  00000073 | LATIN SMALL LETTER S
           A3 |  00000074 | LATIN SMALL LETTER T
           A4 |  00000075 | LATIN SMALL LETTER U
           A5 |  00000076 | LATIN SMALL LETTER V
           A6 |  00000077 | LATIN SMALL LETTER W
           A7 |  00000078 | LATIN SMALL LETTER X
           A8 |  00000079 | LATIN SMALL LETTER Y
           A9 |  0000007A | LATIN SMALL LETTER Z
           AA |  000000A1 | INVERTED EXCLAMATION MARK
           AB |  000000BF | INVERTED QUESTION MARK
           AC |  00000040 | COMMERCIAL AT
           AD |  000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
           AE |  0000005B | LEFT SQUARE BRACKET
           AF |  000000AE | REGISTERED SIGN
           B0 |  000000A2 | CENT SIGN
           B1 |  000000A3 | POUND SIGN
           B2 |  000000A5 | YEN SIGN
           B3 |  000000B7 | MIDDLE DOT
           B4 |  000000A9 | COPYRIGHT SIGN
           B5 |  000000A7 | SECTION SIGN
           B6 |  000000B6 | PILCROW SIGN
           B7 |  000000BC | VULGAR FRACTION ONE QUARTER
           B8 |  000000BD | VULGAR FRACTION ONE HALF
           B9 |  000000BE | VULGAR FRACTION THREE QUARTERS
           BA |  000000AC | NOT SIGN
           BB |  0000007C | VERTICAL LINE
           BC |  000000AF | MACRON
           BD |  000000A8 | DIAERESIS
           BE |  0000005C | REVERSE SOLIDUS
           BF |  000000D7 | MULTIPLICATION SIGN

the lowercase era!! 81–89 is LATIN SMALL LETTER A through LATIN SMALL LETTER I, then it takes a lil bracket detour, then 91–99 is j through r, then another detour, then A2–A9 finishes it out with s through z. it's giving "alphabet but make it a scavenger hunt" πŸ™ˆ and the currency girlies are all here β€” B0 CENT SIGN, B1 POUND SIGN, B2 YEN SIGN, plus 9F CURRENCY SIGN and 5B DOLLAR SIGN from earlier. and B7–B9 serving VULGAR FRACTION ONE QUARTER, ONE HALF, THREE QUARTERS β€” fractions but make them rude about it 😭 also AC COMMERCIAL AT at 00000040 is literally the @, hi bestie 🫢


last stretch! caps, and a bunch of accented vowels hitting their final form πŸ‘‘πŸ’œ

           C0 |  000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
           C1 |  00000041 | LATIN CAPITAL LETTER A
           C2 |  00000042 | LATIN CAPITAL LETTER B
           C3 |  00000043 | LATIN CAPITAL LETTER C
           C4 |  00000044 | LATIN CAPITAL LETTER D
           C5 |  00000045 | LATIN CAPITAL LETTER E
           C6 |  00000046 | LATIN CAPITAL LETTER F
           C7 |  00000047 | LATIN CAPITAL LETTER G
           C8 |  00000048 | LATIN CAPITAL LETTER H
           C9 |  00000049 | LATIN CAPITAL LETTER I
           CA |  000000AD | SOFT HYPHEN
           CB |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           CC |  0000007E | TILDE
           CD |  000000F2 | LATIN SMALL LETTER O WITH GRAVE
           CE |  000000F3 | LATIN SMALL LETTER O WITH ACUTE
           CF |  000000F5 | LATIN SMALL LETTER O WITH TILDE
           D0 |  000000E6 | LATIN SMALL LETTER AE
           D1 |  0000004A | LATIN CAPITAL LETTER J
           D2 |  0000004B | LATIN CAPITAL LETTER K
           D3 |  0000004C | LATIN CAPITAL LETTER L
           D4 |  0000004D | LATIN CAPITAL LETTER M
           D5 |  0000004E | LATIN CAPITAL LETTER N
           D6 |  0000004F | LATIN CAPITAL LETTER O
           D7 |  00000050 | LATIN CAPITAL LETTER P
           D8 |  00000051 | LATIN CAPITAL LETTER Q
           D9 |  00000052 | LATIN CAPITAL LETTER R
           DA |  000000B9 | SUPERSCRIPT ONE
           DB |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           DC |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           DD |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           DE |  000000FA | LATIN SMALL LETTER U WITH ACUTE
           DF |  000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
           E0 |  000000B4 | ACUTE ACCENT
           E1 |  000000F7 | DIVISION SIGN
           E2 |  00000053 | LATIN CAPITAL LETTER S
           E3 |  00000054 | LATIN CAPITAL LETTER T
           E4 |  00000055 | LATIN CAPITAL LETTER U
           E5 |  00000056 | LATIN CAPITAL LETTER V
           E6 |  00000057 | LATIN CAPITAL LETTER W

capital era, same scavenger-hunt energy: C1–C9 is A through I, D1–D9 is J through R, E2 onwards picks up S, T, U, V, W… and C0 is LATIN CAPITAL LETTER THORN (Icelandic) at 000000DE, still repping Iceland πŸ’€ also CC is TILDE at 0000007E, CA is SOFT HYPHEN at 000000AD, DA is SUPERSCRIPT ONE at 000000B9, and E1 is DIVISION SIGN at 000000F7 β€” math jumped out πŸŽ€ and yes, DB–DF is the u-with-everything speedrun plus LATIN SMALL LETTER Y WITH DIAERESIS, obsessed.

and that's where this chunk of the table clocks out β€” still more coming, don't go anywhere πŸ’–βœ¨

...okay bestie we're mid-table, no time to waste, picking it right back up ✨

           E7 |  00000058 | LATIN CAPITAL LETTER X
           E8 |  00000059 | LATIN CAPITAL LETTER Y
           E9 |  0000005A | LATIN CAPITAL LETTER Z
           EA |  000000B2 | SUPERSCRIPT TWO
           EB |  000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
           EC |  0000005E | CIRCUMFLEX ACCENT
           ED |  000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
           EE |  000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
           EF |  000000D5 | LATIN CAPITAL LETTER O WITH TILDE
           F0 |  00000030 | DIGIT ZERO
           F1 |  00000031 | DIGIT ONE
           F2 |  00000032 | DIGIT TWO
           F3 |  00000033 | DIGIT THREE
           F4 |  00000034 | DIGIT FOUR
           F5 |  00000035 | DIGIT FIVE
           F6 |  00000036 | DIGIT SIX
           F7 |  00000037 | DIGIT SEVEN
           F8 |  00000038 | DIGIT EIGHT
           F9 |  00000039 | DIGIT NINE
           FA |  000000B3 | SUPERSCRIPT THREE
           FB |  000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
           FC |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           FD |  000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
           FE |  000000DA | LATIN CAPITAL LETTER U WITH ACUTE
           FF |  0000009F | APPLICATION PROGRAM COMMAND (APC)

And that's the whole map, bestie β€” FF and out. πŸŽ€ Not me getting emotional over APPLICATION PROGRAM COMMAND (APC) closing out the block like the main character it is. πŸ’…


πŸ‘‘ AUTHOR πŸ‘‘

Okay so credit where credit is due, periodt:

Copyright (C) 2002-2017 Guido Flohr <http://www.guido-flohr.net/> (<mailto:guido.flohr@cantanea.com>), all rights reserved. See the source code for details!code for details!

Not me re-reading that last line β€” yes babes, code for details!code for details! is literally doubled like that in the original. πŸ’€ We do not gatekeep typos, we preserve them with love. No cap.

πŸ¦‹ SEE ALSO πŸ¦‹

Go touch these other pages, bestie, they're lowkey part of the whole ecosystem:


And that's a wrap on the whole page, fr fr 🫢 This lil beauty ships as perl v5.42.0, dated 2025-01-22 β€” that's the footer, bestie, consider it signed, sealed, and slayed. Go forth and recode your little heart out. πŸ’–πŸŒˆ