Locale:...:IBM875(3)

πŸ’… Locale::RecodeData::IBM875(3) β€” bestie edition πŸŽ€

okay so real talk: this is a perl manual page, and the whole thing lives under User Contributed Perl Documentation. The full name of the thing is Locale::RecodeData::IBM875(3) β€” say that three times fast, iykyk. ✨

🌸 NAME 🌸

Locale::RecodeData::IBM875 β€” literally just conversion routines for IBM875. that's it. that's the whole vibe. πŸ’–

✨ SYNOPSIS ✨

This module is internal to libintl.  Do not use directly!
🫢 bestie, i need you to hear me on this one: this module is internal to libintl. Like, it's not for you. It's not for me. It's not for anybody's main character moment. Do not use directly! The exclamation point is doing a lot of emotional labor there and i respect it. 😭

πŸ¦‹ DESCRIPTION πŸ¦‹

So this module is generated β€” like, nobody sat down and hand-wrote this, a machine made it β€” and what it contains is the conversion tables and the routines for IBM875. Tables + routines. That's the whole personality. slay, i guess. πŸ’…

πŸ’œ COMMENTS πŸ’œ

These comments got extracted straight out of the original charmap, and i'm presenting them to you exactly as they came out. no edits, no filters, we respect the source material:

 version: 1.0
  source: UNICODE 1.0
 alias CP875
 alias EBCDIC-GREEK

so yeah: version 1.0, source UNICODE 1.0, and two aliases β€” CP875 and EBCDIC-GREEK. 🌈

πŸ™ˆ important caveat incoming, do not scroll past: please note that the aliases listed above are not necessarily valid! like, they're listed, but that doesn't mean they're gonna work out. it's giving "situationship," not "committed relationship." fr fr, don't @ me at the aliases.

πŸ‘‘ CHARACTER TABLE πŸ‘‘

okay so here's where it gets iconic β€” there's a character table, and two things you need to know before you even look at it:

  • The following table is sorted in the same order as the original charmap. Same order, no reshuffling, we're not out here reorganizing anyone's furniture. πŸŽ€
  • All character codes are in hexadecimal. Every single one. hex girl summer. πŸ”₯

And one more thing, because clarity is the moment: please read 'ISO-10646' as 'ISO-10646-UCS4'. Like, when you see the short one, think the long one. that's the assignment. ⭐


✨ and the table itself is up next β€” we're just getting started, there's more coming ✨

okay so we're picking up right in the middle of the character table β€” same three columns as before (Local, ISO-10646, Description), no header repeat, just vibes and hex. first up: the control zone. some of these will look familiar, some will have you like "???" but every single one is here, no skipping, 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 |  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)

bestie look at that and tell me the local values aren't just doing whatever they want 😭 like 04 is STRING TERMINATOR, 07 is DELETE, and <hotpink>LINE FEED</hotpink> is chilling at 25?? and BELL is at 2F?? iconic behaviour honestly. also 25 | 0000000A | LINE FEED (LF) β€” yes, that's the one that actually matters to you, it's just not where your instincts say it should be. and ESCAPE (ESC) lives at 27. no notes, we love a chaotic little control block πŸ’…


then 40 and up and we hit printables β€” and this is where it gets good, because the Greek letters start showing up:

           40 |  00000020 | SPACE
           41 |  00000391 | GREEK CAPITAL LETTER ALPHA
           42 |  00000392 | GREEK CAPITAL LETTER BETA
           43 |  00000393 | GREEK CAPITAL LETTER GAMMA
           44 |  00000394 | GREEK CAPITAL LETTER DELTA
           45 |  00000395 | GREEK CAPITAL LETTER EPSILON
           46 |  00000396 | GREEK CAPITAL LETTER ZETA
           47 |  00000397 | GREEK CAPITAL LETTER ETA
           48 |  00000398 | GREEK CAPITAL LETTER THETA
           49 |  00000399 | GREEK CAPITAL LETTER IOTA
           4A |  0000005B | LEFT SQUARE BRACKET
           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 |  0000039A | GREEK CAPITAL LETTER KAPPA
           52 |  0000039B | GREEK CAPITAL LETTER LAMDA
           53 |  0000039C | GREEK CAPITAL LETTER MU
           54 |  0000039D | GREEK CAPITAL LETTER NU
           55 |  0000039E | GREEK CAPITAL LETTER XI
           56 |  0000039F | GREEK CAPITAL LETTER OMICRON
           57 |  000003A0 | GREEK CAPITAL LETTER PI
           58 |  000003A1 | GREEK CAPITAL LETTER RHO
           59 |  000003A3 | GREEK CAPITAL LETTER SIGMA
           5A |  0000005D | RIGHT SQUARE BRACKET
           5B |  00000024 | DOLLAR SIGN
           5C |  0000002A | ASTERISK
           5D |  00000029 | RIGHT PARENTHESIS
           5E |  0000003B | SEMICOLON
           5F |  0000005E | CIRCUMFLEX ACCENT
           60 |  0000002D | HYPHEN-MINUS
           61 |  0000002F | SOLIDUS
           62 |  000003A4 | GREEK CAPITAL LETTER TAU
           63 |  000003A5 | GREEK CAPITAL LETTER UPSILON
           64 |  000003A6 | GREEK CAPITAL LETTER PHI
           65 |  000003A7 | GREEK CAPITAL LETTER CHI
           66 |  000003A8 | GREEK CAPITAL LETTER PSI
           67 |  000003A9 | GREEK CAPITAL LETTER OMEGA
           68 |  000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
           69 |  000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
           6B |  0000002C | COMMA
           6C |  00000025 | PERCENT SIGN
           6D |  0000005F | LOW LINE
           6E |  0000003E | GREATER-THAN SIGN
           6F |  0000003F | QUESTION MARK
           70 |  000000A8 | DIAERESIS
           71 |  00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
           72 |  00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
           73 |  00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
           74 |  00002207 | NABLA
           75 |  0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
           76 |  0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
           77 |  0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
           78 |  0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
           79 |  00000060 | GRAVE ACCENT
           7A |  0000003A | COLON
           7B |  00000023 | NUMBER SIGN
           7C |  00000040 | COMMERCIAL AT
           7D |  00000027 | APOSTROPHE
           7E |  0000003D | EQUALS SIGN
           7F |  00000022 | QUOTATION MARK

okay a few things. no 6A row β€” the table literally jumps from 69 to 6B, not me being sloppy, that's just what's listed πŸ™ˆ. and the punctuation is fully unhinged in the best way: 4A is LEFT SQUARE BRACKET, 5A is RIGHT SQUARE BRACKET, 5B is DOLLAR SIGN, 7B is NUMBER SIGN, 7C is COMMERCIAL AT, and 7F is a QUOTATION MARK which is lowkey sending me. also 74 | 00002207 | NABLA is out here with the only 5-hex-digit-ish code in the whole neighbourhood, main character energy fr fr ⭐

the Greek caps run in blocks: 41–49 (alpha through iota), then 51–59 (kappa through sigma, and yes 52 is LAMDA spelled like that, not mu), then 62–69, then the TONOS crew 71–78, with 68 and 69 rocking DIALYTIKA. keep all that spelling exactly as written, that's not a typo on my end, that's the table πŸ’œ


next stretch, 80 through BF, where the lowercase squad arrives and honestly it ate:

           80 |  00000385 | GREEK DIALYTIKA TONOS
           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 |  000003B1 | GREEK SMALL LETTER ALPHA
           8B |  000003B2 | GREEK SMALL LETTER BETA
           8C |  000003B3 | GREEK SMALL LETTER GAMMA
           8D |  000003B4 | GREEK SMALL LETTER DELTA
           8E |  000003B5 | GREEK SMALL LETTER EPSILON
           8F |  000003B6 | GREEK SMALL LETTER ZETA
           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 |  000003B7 | GREEK SMALL LETTER ETA
           9B |  000003B8 | GREEK SMALL LETTER THETA
           9C |  000003B9 | GREEK SMALL LETTER IOTA
           9D |  000003BA | GREEK SMALL LETTER KAPPA
           9E |  000003BB | GREEK SMALL LETTER LAMDA
           9F |  000003BC | GREEK SMALL LETTER MU
           A0 |  000000B4 | ACUTE ACCENT
           A1 |  0000007E | TILDE
           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 |  000003BD | GREEK SMALL LETTER NU
           AB |  000003BE | GREEK SMALL LETTER XI
           AC |  000003BF | GREEK SMALL LETTER OMICRON
           AD |  000003C0 | GREEK SMALL LETTER PI
           AE |  000003C1 | GREEK SMALL LETTER RHO
           AF |  000003C3 | GREEK SMALL LETTER SIGMA
           B0 |  000000A3 | POUND SIGN
           B1 |  000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
           B2 |  000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
           B3 |  000003AE | GREEK SMALL LETTER ETA WITH TONOS
           B4 |  00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
           B5 |  000003AF | GREEK SMALL LETTER IOTA WITH TONOS
           B6 |  000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
           B7 |  000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
           B8 |  000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
           B9 |  000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
           BA |  000003C2 | GREEK SMALL LETTER FINAL SIGMA
           BB |  000003C4 | GREEK SMALL LETTER TAU
           BC |  000003C5 | GREEK SMALL LETTER UPSILON
           BD |  000003C6 | GREEK SMALL LETTER PHI
           BE |  000003C7 | GREEK SMALL LETTER CHI
           BF |  000003C8 | GREEK SMALL LETTER PSI

okay the Latin lowercase is almost alphabetical and then just doesn't finish: 81–89 is a through i, then it ghosts you and comes back at 91–99 for j through r, then A2–A9 for s through z. three separate chunks. it's giving "group project where nobody talked to each other" πŸ’€ and squeezed in between: 8A–8F Greek small alphaβ†’zeta, 9A–9F etaβ†’mu, AA–AF nuβ†’sigma, plus 90 DEGREE SIGN and A0 ACUTE ACCENT and A1 TILDE just vibing as speedbumps. and you know I clocked B4 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS β€” the whole two-adjectives combo, she's extra and she earned it πŸ‘‘


final stretch of what's here, C0 through EB. uppercase comeback, curly braces, and some truly random typography:

           C0 |  0000007B | LEFT CURLY BRACKET
           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 |  000003C9 | GREEK SMALL LETTER OMEGA
           CC |  000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
           CD |  000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
           CE |  00002018 | LEFT SINGLE QUOTATION MARK
           CF |  00002015 | HORIZONTAL BAR
           D0 |  0000007D | RIGHT CURLY BRACKET
           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 |  000000B1 | PLUS-MINUS SIGN
           DB |  000000BD | VULGAR FRACTION ONE HALF
           DD |  000000B7 | MIDDLE DOT
           DE |  00002019 | RIGHT SINGLE QUOTATION MARK
           DF |  000000A6 | BROKEN BAR
           E0 |  0000005C | REVERSE SOLIDUS
           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
           E7 |  00000058 | LATIN CAPITAL LETTER X
           E8 |  00000059 | LATIN CAPITAL LETTER Y
           E9 |  0000005A | LATIN CAPITAL LETTER Z
           EA |  000000B2 | SUPERSCRIPT TWO
           EB |  000000A7 | SECTION SIGN

caps repeat the same grouping pattern: C1–C9 is A–I, D1–D9 is J–R, E2–E9 is S–Z. sandwiched between them: C0 LEFT CURLY BRACKET and D0 RIGHT CURLY BRACKET (they're split all the way across the alphabet, rude), E0 REVERSE SOLIDUS, CA SOFT HYPHEN</can> who does nothing and we respect her for it, CE/DE the single curly quotes, CF HORIZONTAL BAR, DA PLUS-MINUS SIGN, DB VULGAR FRACTION ONE HALF (her name is so dramatic, obsessed), DD MIDDLE DOT, DF BROKEN BAR, EA SUPERSCRIPT TWO, and EB SECTION SIGN. and Greek small OMEGA CB, IOTA WITH DIALYTIKA CC, UPSILON WITH DIALYTIKA CD close out the Greek party πŸŽ€

also real talk: DC and E1 are not in the table β€” it goes DB β†’ DD and E0 β†’ E2. that's the page, not me dropping rows. same deal as 6A earlier. don't go inventing them, bestie πŸ™ˆ

and that's genuinely where this chunk of the page cuts off β€” the table stops dead at EB, mid-pattern, no wrap-up, no goodbye. we are literally hanging off a cliff here 😭 more page coming, don't move πŸ’œ

okay bestie, the table is still going β€” here’s the rest of the character-table lineup, and every byte is iconic:

           EE |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           EF |  000000AC | NOT SIGN
           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 |  000000A9 | COPYRIGHT SIGN
           FE |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           FF |  0000009F | APPLICATION PROGRAM COMMAND (APC)

and that’s the end of the table, bestie β€” no skipped entries, no cap. 🫢

πŸ’– AUTHOR πŸ’–

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!

🌈 SEE ALSO 🌈

Go check out Locale::RecodeData(3), Locale::Recode(3), perl(1) β€” they’re literally right there, iykyk.

✨ That’s the whole page, bestie β€” signing off from the perl v5.42.0 era, dated 2025-01-22. ✨