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 CARON
  • A8 β†’ 00000161 β€” LATIN SMALL LETTER S WITH CARON
  • B4 β†’ 0000017D β€” LATIN CAPITAL LETTER Z WITH CARON
  • B8 β†’ 0000017E β€” LATIN SMALL LETTER Z WITH CARON
  • BC β†’ 00000152 β€” LATIN CAPITAL LIGATURE OE
  • BD β†’ 00000153 β€” LATIN SMALL LIGATURE OE
  • BE β†’ 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, then SUPERSCRIPT ONE at B9. 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:

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 βœ¨πŸŽ€πŸ¦‹