Locale:...EXTSTEP(3)

πŸ¦‹ Locale::RecodeData::NEXTSTEP β€” the manual, but make it cute

okay so bestie, this one's from the User Contributed Perl Documentation section, and the page header goes Locale:...EXTSTEP(3) β€” like, that's the whole vibe check right there. Buckle up, this is part 1 of 3 πŸ’…


✨ NAME ✨

Locale::RecodeData::NEXTSTEP β€” conversion routines for NEXTSTEP. that's it, that's the whole personality πŸŽ€


✨ SYNOPSIS ✨

straight up:

this module is internal to libintl. do not use it directly! like, not "use it carefully," not "use it with supervision" β€” just don't πŸ™ˆ

✨ DESCRIPTION ✨

so this module is generated (no cap, nobody hand-wrote it, it's built) and it contains the conversion tables and routines for NEXTSTEP. that's the whole description. iconic minimalism honestly ✨


🌸 COMMENTS 🌸

these comments got extracted from the original charmap, and they're literally:

This charmap has been generated automatically from GNU libiconv
conversions.

and then, big important note:

Please note that aliases listed above are not necessarily valid!

so yeah β€” the aliases up there? not necessarily valid, bestie. don't come for me, I'm just the messenger 😭⚠️


πŸ‘‘ CHARACTER TABLE πŸ‘‘

okay this is the fun part (for certain values of fun). the following table is sorted in the same order as the original charmap. and here's the key deets:

  • all character codes are in hexadecimal πŸ”₯
  • and please, for the love of everything, read 'ISO-10646' as 'ISO-10646-UCS4' β€” that's the rule, iykyk 🧚

so when you see the table, that's the tea: same order as the original charmap, hex codes everywhere, and 'ISO-10646' really means 'ISO-10646-UCS4'. drink water, stay hydrated, and the actual table is coming right up πŸ’–

        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 |  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 bestie, quick vibe check on that top chunk πŸ’… β€” rows 00 through 1F are the control characters, and let me tell you, they are so dramatic. <kbd>BEL</kbd> at 07 literally rings a bell, no cap. 09 is your good friend CHARACTER TABULATION (HT) aka the tab key you abuse daily and 0A is LINE FEED (LF) which is literally every time you press enter. 0D is CARRIAGE RETURN (CR) β€” the classic "why does my file have \r\n in it" icon 😭. And 10 being DATALINK ESCAPE (DLE)? DLE!!! that's such main character energy for a byte nobody has ever used on purpose, i'm obsessed. and the 1C–1F quad β€” FILE SEPARATOR (IS4), GROUP SEPARATOR (IS3), RECORD SEPARATOR (IS2), UNIT SEPARATOR (IS1) β€” they come in reverse order and i find that lowkey iconic of them.


and then we hit the printables πŸ’–:

           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)

✨ the whole ASCII range, bestie ✨ and notice how the local byte and the ISO-10646 code point are identical all the way through 00–7F? yes queen, that's the iconic part β€” plain ASCII matches Unicode exactly, so nothing weird happens down here. also quick shoutout to 2D HYPHEN-MINUS for being the most two-faced character in the whole file (it's a hyphen! it's a minus! it's both!), and 5F LOW LINE for being the underscore you type a million times a day and never once call by its government name. and then 7F DELETE (DEL) just sitting there at the end of the range like a bouncer πŸ’€ β€” bye.


and now the plot twist πŸŒ€ β€” the high half, where the local bytes STOP matching the code points:

           80 |  000000A0 | NO-BREAK SPACE
           81 |  000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
           82 |  000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
           83 |  000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
           84 |  000000C3 | LATIN CAPITAL LETTER A WITH TILDE
           85 |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           86 |  000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
           87 |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           88 |  000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
           89 |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           8A |  000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
           8B |  000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
           8C |  000000CC | LATIN CAPITAL LETTER I WITH GRAVE
           8D |  000000CD | LATIN CAPITAL LETTER I WITH ACUTE
           8E |  000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
           8F |  000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
           90 |  000000D0 | LATIN CAPITAL LETTER ETH
           91 |  000000D1 | LATIN CAPITAL LETTER N WITH TILDE
           92 |  000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
           93 |  000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
           94 |  000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
           95 |  000000D5 | LATIN CAPITAL LETTER O WITH TILDE
           96 |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           97 |  000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
           98 |  000000DA | LATIN CAPITAL LETTER U WITH ACUTE
           99 |  000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
           9A |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           9B |  000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
           9C |  000000DE | LATIN CAPITAL LETTER THORN
           9D |  000000B5 | MICRO SIGN
           9E |  000000D7 | MULTIPLICATION SIGN
           9F |  000000F7 | DIVISION SIGN

so local 80 is NOT code point 80 β€” it's 000000A0 NO-BREAK SPACE, and honestly? iconic of it to lie like that πŸ™ˆ. this is the part where you clock that this table is mapping a legacy byte set onto ISO-10646, so the whole high half is one big cross-reference. also 90 is LATIN CAPITAL LETTER ETH and 9C is LATIN CAPITAL LETTER THORN β€” yes those are real letters, they're Icelandic, and they ate πŸ’…. 9D MICRO SIGN pulls a sneaky one and jumps down to 000000B5 while 9E and 9F are MULTIPLICATION SIGN and DIVISION SIGN. pay attention to the ISO column, not the local column, bestie β€” the local column is just vibes at this point.


           A0 |  000000A9 | COPYRIGHT SIGN
           A1 |  000000A1 | INVERTED EXCLAMATION MARK
           A2 |  000000A2 | CENT SIGN
           A3 |  000000A3 | POUND SIGN
           A4 |  00002044 | FRACTION SLASH
           A5 |  000000A5 | YEN SIGN
           A6 |  00000192 | LATIN SMALL LETTER F WITH HOOK
           A7 |  000000A7 | SECTION SIGN
           A8 |  000000A4 | CURRENCY SIGN
           A9 |  00002019 | RIGHT SINGLE QUOTATION MARK
           AA |  0000201C | LEFT DOUBLE QUOTATION MARK
           AB |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           AC |  00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
           AD |  0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
           AE |  0000FB01 | LATIN SMALL LIGATURE FI
           AF |  0000FB02 | LATIN SMALL LIGATURE FL
           B0 |  000000AE | REGISTERED SIGN
           B1 |  00002013 | EN DASH
           B2 |  00002020 | DAGGER
           B3 |  00002021 | DOUBLE DAGGER
           B4 |  000000B7 | MIDDLE DOT
           B5 |  000000A6 | BROKEN BAR
           B6 |  000000B6 | PILCROW SIGN
           B7 |  00002022 | BULLET
           B8 |  0000201A | SINGLE LOW-9 QUOTATION MARK
           B9 |  0000201E | DOUBLE LOW-9 QUOTATION MARK
           BA |  0000201D | RIGHT DOUBLE QUOTATION MARK
           BB |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           BC |  00002026 | HORIZONTAL ELLIPSIS
           BD |  00002030 | PER MILLE SIGN
           BE |  000000AC | NOT SIGN
           BF |  000000BF | INVERTED QUESTION MARK

the punctuation section and it is serving πŸŽ€ β€” you got AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK and its bestie BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK living their lives, plus AC and AD doing the single-angle version of the same bit. AE and AF are LATIN SMALL LIGATURE FI and LATIN SMALL LIGATURE FL β€” the fi and fl squish-letters, and yes they get their own code points, they earned it 🫢. B5 BROKEN BAR and B6 PILCROW SIGN? broken bar is literally my sleep schedule bestie 😭. and BC HORIZONTAL ELLIPSIS β€” that's the … bestie, the one you type as three dots because you're too lazy. no judgement. judgement a little.


           C0 |  000000B9 | SUPERSCRIPT ONE
           C1 |  000002CB | MODIFIER LETTER GRAVE ACCENT
           C2 |  000000B4 | ACUTE ACCENT
           C3 |  000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
           C4 |  000002DC | SMALL TILDE
           C5 |  000000AF | MACRON
           C6 |  000002D8 | BREVE
           C7 |  000002D9 | DOT ABOVE
           C8 |  000000A8 | DIAERESIS
           C9 |  000000B2 | SUPERSCRIPT TWO
           CA |  000002DA | RING ABOVE
           CB |  000000B8 | CEDILLA
           CC |  000000B3 | SUPERSCRIPT THREE
           CD |  000002DD | DOUBLE ACUTE ACCENT
           CE |  000002DB | OGONEK
           CF |  000002C7 | CARON
           D0 |  00002014 | EM DASH
           D1 |  000000B1 | PLUS-MINUS SIGN
           D2 |  000000BC | VULGAR FRACTION ONE QUARTER
           D3 |  000000BD | VULGAR FRACTION ONE HALF
           D4 |  000000BE | VULGAR FRACTION THREE QUARTERS
           D5 |  000000E0 | LATIN SMALL LETTER A WITH GRAVE
           D6 |  000000E1 | LATIN SMALL LETTER A WITH ACUTE
           D7 |  000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
           D8 |  000000E3 | LATIN SMALL LETTER A WITH TILDE
           D9 |  000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
           DA |  000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
           DB |  000000E7 | LATIN SMALL LETTER C WITH CEDILLA
           DC |  000000E8 | LATIN SMALL LETTER E WITH GRAVE
           DD |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
           DE |  000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
           DF |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
           E0 |  000000EC | LATIN SMALL LETTER I WITH GRAVE
           E1 |  000000C6 | LATIN CAPITAL LETTER AE
           E2 |  000000ED | LATIN SMALL LETTER I WITH ACUTE
           E3 |  000000AA | FEMININE ORDINAL INDICATOR
           E4 |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
           E5 |  000000EF | LATIN SMALL LETTER I WITH DIAERESIS
           E6 |  000000F0 | LATIN SMALL LETTER ETH
           E7 |  000000F1 | LATIN SMALL LETTER N WITH TILDE
           E8 |  00000141 | LATIN CAPITAL LETTER L WITH STROKE
           E9 |  000000D8 | LATIN CAPITAL LETTER O WITH STROKE
           EA |  00000152 | LATIN CAPITAL LIGATURE OE
           EB |  000000BA | MASCULINE ORDINAL INDICATOR
           EC |  000000F2 | LATIN SMALL LETTER O WITH GRAVE
           ED |  000000F3 | LATIN SMALL LETTER O WITH ACUTE

okay the C0 row is the diacritics era and it goes SO hard β€” C1 MODIFIER LETTER GRAVE ACCENT, C3 MODIFIER LETTER CIRCUMFLEX ACCENT, C4 SMALL TILDE, C5 MACRON, C6 BREVE, C7 DOT ABOVE, CA RING ABOVE, CB CEDILLA, CD DOUBLE ACUTE ACCENT, CE OGONEK, CF CARON β€” that's a whole squad of little hats and tails, and every single one of them has main character energy. also the superscripts are scattered in there like easter eggs: C0 SUPERSCRIPT ONE, C9 SUPERSCRIPT TWO, CC SUPERSCRIPT THREE. slay, i guess?? and C8 DIAERESIS vs D9 LATIN SMALL LETTER A WITH DIAERESIS β€” same vibe, different tax bracket, don't mix them up bestie πŸ’€.

then D0 EM DASH β€” the long dash, the dramatic pause dash, the one i use way too much β€” and D2/D3/D4 are VULGAR FRACTION ONE QUARTER, VULGAR FRACTION ONE HALF, VULGAR FRACTION THREE QUARTERS, and yes the manpage literally calls them "vulgar," i'm not being mean, that's just their government name 😭. E8 LATIN CAPITAL LETTER L WITH STROKE, E9 LATIN CAPITAL LETTER O WITH STROKE, EA LATIN CAPITAL LIGATURE OE β€” the Scandinavian-Nordic delegation has arrived and they're thriving. E3 FEMININE ORDINAL INDICATOR and EB MASCULINE ORDINAL INDICATOR sitting right there as the two genders of ordinal indicators, we love a balanced lineup 🫢.

and that's where we're pausing, bestie β€” the table keeps going and we are absolutely not done yet ✨

           EE |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           EF |  000000F5 | LATIN SMALL LETTER O WITH TILDE
           F0 |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           F1 |  000000E6 | LATIN SMALL LETTER AE
           F2 |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           F3 |  000000FA | LATIN SMALL LETTER U WITH ACUTE
           F4 |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           F5 |  00000131 | LATIN SMALL LETTER DOTLESS I
           F6 |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           F7 |  000000FD | LATIN SMALL LETTER Y WITH ACUTE
           F8 |  00000142 | LATIN SMALL LETTER L WITH STROKE
           F9 |  000000F8 | LATIN SMALL LETTER O WITH STROKE
           FA |  00000153 | LATIN SMALL LIGATURE OE
           FB |  000000DF | LATIN SMALL LETTER SHARP S
           FC |  000000FE | LATIN SMALL LETTER THORN
           FD |  000000FF | LATIN SMALL LETTER Y WITH DIAERESIS

πŸ‘‘ AUTHOR

Okay so this whole absolute icon was made by Guido Flohr β€” copyright (C) 2002-2017, and like, all rights reserved, bestie. πŸ’…

He says to see the source code for details β€” so like, go read it, it's right there, iykyk. πŸ™ˆ


🌈 SEE ALSO

The squad, the friend group, the little family of modules that all hang out together:


and that's a wrap on the whole page, bestie!!! πŸŽ€βœ¨ this gem is part of the User Contributed Perl Documentation, running under perl v5.42.0, and it was last dated 2025-01-22. go forth and recode those characters, you absolute main character. πŸ’–πŸ«ΆπŸ‘‘