Locale:..._8859_15(3)
π Locale::RecodeData::ISO_8859_15(3)
okay so real talk, this is Locale:..._8859_15(3) β from the User Contributed Perl Documentation, section 3 of the manual, bestie. The actual manual name is Locale::RecodeData::ISO_8859_15, and we are so about to get into it β¨
πΈ NAME πΈ
Locale::RecodeData::ISO_8859_15 β the conversion routines for ISO-8859-15 π
π¦ SYNOPSIS π¦
This module is internal to libintl. Do not use directly!
fr fr, that's the whole synopsis. it's giving "no thoughts, just vibes" but make it a security warning π like, it's not for you, it's not for me, it's for libintl and that's that π
π DESCRIPTION π
So this module is generated (not hand-written, bestie, it's born this way π§) and it contains the conversion tables and routines for ISO-8859-15. that's it. that's the whole personality. tables, routines, ISO-8859-15, slay π
β¨ COMMENTS β¨
The following comments have been extracted from the original charmap β so this is literally the receipts, direct from the source:
automatically generated from the charDB
Ate. No cap. It generated itself from the charDB and honestly? we respect the hustle π«Ά
β οΈ Please note that aliases listed above are not necessarily valid!
like, do NOT come for me if an alias doesn't work, it was never guaranteed valid, okay? π read that again, it matters π
π CHARACTER TABLE π
The following table is sorted in the same order as the original charmap π
All character codes are in hexadecimal. hex only, bestie, it's giving 0x energy π₯
And the glow-up instruction: please read 'ISO-10646' as 'ISO-10646-UCS4' β yes, literally, wherever you see the short one, think the long one, iykyk β
(the character table itself is coming in the next part, don't you worry π)
Okay bestie, buckle up β this is the actual table and it's long, so we're doing it in vibe-sized chunks. Every row is verbatim, no cap. πΈ
First up: the control characters. 00 through 1F β the original gremlins of the charset. These are the ones that make your terminal do stuff instead of showing stuff, and they held their ISO-10646 code points perfectly, bless. β¨
00 | 00000000 | NULL
01 | 00000001 | START OF HEADING
02 | 00000002 | START OF TEXT
03 | 00000003 | END OF TEXT
04 | 00000004 | END OF TRANSMISSION
05 | 00000005 | ENQUIRY
06 | 00000006 | ACKNOWLEDGE
07 | 00000007 | BELL
08 | 00000008 | BACKSPACE
09 | 00000009 | HORIZONTAL TABULATION
0A | 0000000A | LINE FEED
0B | 0000000B | VERTICAL TABULATION
0C | 0000000C | FORM FEED
0D | 0000000D | CARRIAGE RETURN
0E | 0000000E | SHIFT OUT
0F | 0000000F | SHIFT IN
10 | 00000010 | DATA LINK ESCAPE
11 | 00000011 | DEVICE CONTROL ONE
12 | 00000012 | DEVICE CONTROL TWO
13 | 00000013 | DEVICE CONTROL THREE
14 | 00000014 | DEVICE CONTROL FOUR
15 | 00000015 | NEGATIVE ACKNOWLEDGE
16 | 00000016 | SYNCHRONOUS IDLE
17 | 00000017 | END OF TRANSMISSION BLOCK
18 | 00000018 | CANCEL
19 | 00000019 | END OF MEDIUM
1A | 0000001A | SUBSTITUTE
1B | 0000001B | ESCAPE
1C | 0000001C | FILE SEPARATOR
1D | 0000001D | GROUP SEPARATOR
1E | 0000001E | RECORD SEPARATOR
1F | 0000001F | UNIT SEPARATOR
BELL, BACKSPACE, ESCAPEβ¦ the holy trinity of "why is my terminal making noise at 3am". π Note that every single one of these matches its ISO-10646 value exactly β no drama, no swaps.
π the printable ASCII era (20β3F)
Space, punctuation, digits. The bread and butter. Notice 24 | 00000024 | DOLLAR SIGN β the dollar is unchanged here, which becomes relevant when we get to the euro later. Foreshadowing. π
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
DIGIT ZERO through DIGIT NINE living their best consecutive life. Iconic. π
π uppercase hours (40β5F)
COMMERCIAL AT then straight into LATIN CAPITAL LETTER A β LATIN CAPITAL LETTER Z, then the bracket zone. All still identical between the local byte and ISO-10646, because the first 128 code points are just built different. π¦
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
REVERSE SOLIDUS at 5C is your bestie the backslash. LOW LINE at 5F is the underscore (yes, that's its legal name, we don't make the rules π«Ά).
π lowercase + DEL (60β7F)
Same energy, but small. Plus TILDE and then DELETE just sitting there at the end of the block like the last one picked for dodgeball. π
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
That's it, that's the entire ASCII range. Everything from here on out is the spicy zone. π₯
π§ the C1 control zone (80β9F)
Okay so these are technically control characters too, but they come with little parenthesised abbreviations like they're in a group chat with nicknames. PAD, HOP, BPH, NBH, IND, NELβ¦ it's giving alphabet soup. π
80 | 00000080 | PADDING CHARACTER (PAD)
81 | 00000081 | HIGH OCTET PRESET (HOP)
82 | 00000082 | BREAK PERMITTED HERE (BPH)
83 | 00000083 | NO BREAK HERE (NBH)
84 | 00000084 | INDEX (IND)
85 | 00000085 | NEXT LINE (NEL)
86 | 00000086 | START OF SELECTED AREA (SSA)
87 | 00000087 | END OF SELECTED AREA (ESA)
88 | 00000088 | CHARACTER TABULATION SET (HTS)
89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
8A | 0000008A | LINE TABULATION SET (VTS)
8B | 0000008B | PARTIAL LINE FORWARD (PLD)
8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
8D | 0000008D | REVERSE LINE FEED (RI)
8E | 0000008E | SINGLE-SHIFT TWO (SS2)
8F | 0000008F | SINGLE-SHIFT THREE (SS3)
90 | 00000090 | DEVICE CONTROL STRING (DCS)
91 | 00000091 | PRIVATE USE ONE (PU1)
92 | 00000092 | PRIVATE USE TWO (PU2)
93 | 00000093 | SET TRANSMIT STATE (STS)
94 | 00000094 | CANCEL CHARACTER (CCH)
95 | 00000095 | MESSAGE WAITING (MW)
96 | 00000096 | START OF GUARDED AREA (SPA)
97 | 00000097 | END OF GUARDED AREA (EPA)
98 | 00000098 | START OF STRING (SOS)
99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
9C | 0000009C | STRING TERMINATOR (ST)
9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
9E | 0000009E | PRIVACY MESSAGE (PM)
9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
Lowkey obsessed with SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) β that's a whole five-word job title for one byte. Main character energy fr. π
π okay THIS is the part you came for (A0βBF)
Here's where ISO-8859-15 stops being boring. Look at the ISO-10646 column β it changes width of value on us. Most rows are still 000000__, but a few have jumped way up:
A4β000020ACβEURO SIGNπΆA6β00000160βLATIN CAPITAL LETTER S WITH CARONA8β00000161βLATIN SMALL LETTER S WITH CARONB4β0000017DβLATIN CAPITAL LETTER Z WITH CARONB8β0000017EβLATIN SMALL LETTER Z WITH CARONBCβ00000152βLATIN CAPITAL LIGATURE OEBDβ00000153βLATIN SMALL LIGATURE OEBEβ00000178βLATIN CAPITAL LETTER Y WITH DIAERESIS
Those are the glow-ups, bestie. Everything else here is just vibing at its usual code point. β¨
A0 | 000000A0 | NO-BREAK SPACE
A1 | 000000A1 | INVERTED EXCLAMATION MARK
A2 | 000000A2 | CENT SIGN
A3 | 000000A3 | POUND SIGN
A4 | 000020AC | EURO SIGN
A5 | 000000A5 | YEN SIGN
A6 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
A7 | 000000A7 | SECTION SIGN
A8 | 00000161 | LATIN SMALL LETTER S WITH CARON
A9 | 000000A9 | COPYRIGHT SIGN
AA | 000000AA | FEMININE ORDINAL INDICATOR
AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
AC | 000000AC | NOT SIGN
AD | 000000AD | SOFT HYPHEN
AE | 000000AE | REGISTERED SIGN
AF | 000000AF | MACRON
B0 | 000000B0 | DEGREE SIGN
B1 | 000000B1 | PLUS-MINUS SIGN
B2 | 000000B2 | SUPERSCRIPT TWO
B3 | 000000B3 | SUPERSCRIPT THREE
B4 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
B5 | 000000B5 | MICRO SIGN
B6 | 000000B6 | PILCROW SIGN
B7 | 000000B7 | MIDDLE DOT
B8 | 0000017E | LATIN SMALL LETTER Z WITH CARON
B9 | 000000B9 | SUPERSCRIPT ONE
BA | 000000BA | MASCULINE ORDINAL INDICATOR
BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
BC | 00000152 | LATIN CAPITAL LIGATURE OE
BD | 00000153 | LATIN SMALL LIGATURE OE
BE | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
BF | 000000BF | INVERTED QUESTION MARK
Note the ordering:SUPERSCRIPT TWO,SUPERSCRIPT THREE, thenSUPERSCRIPT ONEatB9. Yes, one is after two and three. That's not a typo, that's just how the table is. π
Also SOFT HYPHEN at AD and NO-BREAK SPACE at A0 β the two characters that cause the most "why is my text doing that" moments in all of computing. π
π accented capitals (C0βDF)
Now we're in full Latin-alphabet-with-diacritics territory. A WITH GRAVE, WITH ACUTE, WITH CIRCUMFLEX, WITH TILDE, WITH DIAERESIS, WITH RING ABOVEβ¦ it's a whole mood board. π
Keep an eye on the specials: LATIN CAPITAL LETTER AE (C6), LATIN CAPITAL LETTER ETH (D0), LATIN CAPITAL LETTER O WITH STROKE (D8), LATIN CAPITAL LETTER THORN (DE), MULTIPLICATION SIGN (D7) and LATIN SMALL LETTER SHARP S (DF) crashing the party at the end. Ngl that Γ closing out the uppercase block is chaotic and I respect it. π
C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
C6 | 000000C6 | LATIN CAPITAL LETTER AE
C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
D0 | 000000D0 | LATIN CAPITAL LETTER ETH
D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
D7 | 000000D7 | MULTIPLICATION SIGN
D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
DE | 000000DE | LATIN CAPITAL LETTER THORN
DF | 000000DF | LATIN SMALL LETTER SHARP S
Every single one of these keeps its ISO-10646 value identical to the local byte β C0 is 000000C0, DF is 000000DF, all matching. Clean. β
π¦ and now the lowercase run (E0βED, and we keep going next part)
Same shapes, downshifted. The pattern is so satisfying β E0 mirrors C0, E1 mirrors C1, all the way down. Ate and left no crumbs. π
E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
E6 | 000000E6 | LATIN SMALL LETTER AE
E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
And that's where we pause, bestie β ED is LATIN SMALL LETTER I WITH ACUTE and we are not done with the lowercase squad yet. πΈ
...and we are SO close to the end of the table bestie, stay with me π
EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
F0 | 000000F0 | LATIN SMALL LETTER ETH
F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
F7 | 000000F7 | DIVISION SIGN
F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
FE | 000000FE | LATIN SMALL LETTER THORN
FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
That's it, that's the whole table, FF is the final boss and she ATE π₯ <pink>THORN</pink> at FE is genuinely iconic, an actual letter from Old English just vibing down there at the bottom, we love a historical queen π And F7 sitting there as the DIVISION SIGN, the one math-y interruption in a sea of accented letters, main character energy fr fr π
π«Ά AUTHOR π«Ά
So like, credit where credit is due bestie:
- Copyright (C) 2002-2017 Guido Flohr <http://www.guido-flohr.net/> (<mailto:guido.flohr@cantanea.com>), all rights reserved.
And then, verbatim from the source, because I refuse to paraphrase a legal-ish line:
See the source code for details!code for details!
Yeah, the !code for details! bit is really in there twice-over like that β not me editorialising, that's just what the page says π Keep it in mind and go read the source code if you want the actual details, no cap.
π SEE ALSO π
Go touch these other pages when you're done here, they're the friend group:
okay that's the whole page, you made it to the very end, I'm so proud of you π₯Ήπ This beauty came to you courtesy of perl v5.42.0 and it's dated 2025-01-22 β so go forth, decode your bytes, and slay β¨ππ¦
π¦ 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