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. π
- You can find him at
http://www.guido-flohr.net/π¦ - Or slide into his inbox:
<mailto:guido.flohr@cantanea.com>π¬
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. ππ«Άπ
π¦ where this page comes from
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms