Locale:..._8859_4(3)

πŸ’… Locale::RecodeData::ISO_8859_4 β€” the manual page, bestie edition

okay so first things first: this is a Perl manpage, section 3, straight outta User Contributed Perl Documentation. The module's full name is Locale::RecodeData::ISO_8859_4 and the manpage file itself is Locale:..._8859_4(3) β€” yes the title got abbreviated with ellipsis, it's giving "we ran out of room on the label" ✨


🌸 NAME 🌸

Locale::RecodeData::ISO_8859_4 β€” literally the conversion routines for ISO-8859-4. That's the whole assignment. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

So here's the vibe check:

This module is internal to libintl.  Do not use directly!

Bestie. Do not use directly. It's internal to libintl. That's it, that's the synopsis, no fancy invocation for you to copy. πŸ™ˆ


πŸ’– DESCRIPTION πŸ’–

This module is generated β€” not hand-written, it's machine-made, okay β€” and it contains the conversion tables and routines for ISO-8859-4. Iconic. That's what it does. 🫢


🌈 COMMENTS 🌈

These comments were lifted straight out of the original charmap, no editing, no notes:

 version: 1.0
  source: ECMA registry
 alias ISO-IR-110
 alias ISO_8859-4:1988
 alias ISO_8859-4
 alias LATIN4
 alias L4
⚠️ real talk though β€” please note that the aliases listed above are not necessarily valid! So don't come for me if one of them doesn't work, it literally says so right there πŸ’€

πŸ”₯ CHARACTER TABLE πŸ”₯

okay so this table is sorted in the same order as the original charmap. Every single character code is in hexadecimal, no cap, all hex 🌸

And one tiny but crucial note: when you're reading the table and you see 'ISO-10646', you need to read it as 'ISO-10646-UCS4'. Like, mentally swap it in. That's the whole correction. πŸ’…


(and that's where part 1 wraps, the table itself is coming up next β€” stay tuned bestie πŸ“)

okay so this is where the actual table lives, bestie, and it's long β€” so buckle up πŸŽ€ every single row is here, hex on the left, the ISO-10646 / Unicode code point in the middle, the name on the right, nothing skipped, nothing merged, i would never πŸ’…

        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)

the 0x00–0x1F zone, iconic, ancient, deeply unbothered πŸ’€ notice how every single one has an abbreviation in parens β€” those are the short names, and yes you will be expected to recognise ESC, LF, CR and BEL on sight, no cap.


and then 0x20 hits and the whole vibe shifts into actual printable characters, we love a glow-up ✨

           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)

see how the local byte and the ISO-10646 value are identical all the way through here? that's the whole point, bestie β€” this stretch is a straight one-to-one map, so 0x41 is 0x41 and everyone's happy 😌 DELETE (DEL) at 0x7F is the last one before things get spicy.


now the 0x80–0x9F neighbourhood, and oof, we're back in control-character territory except now the ISO-10646 values still say 000000xx so they line up exactly with the local bytes 🌸

           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)

these names are so dramatic for characters nobody types, and honestly? respect 🫑 the abbreviations in parens are the short forms, same deal as before.


now for the actual ✨Latin-4 moment✨ β€” 0xA0 onwards is where this charset stops being ASCII-with-extras and starts having opinions. watch the middle column, because the local byte and the ISO-10646 value split up here and start living separate lives πŸ’…

           A0 |  000000A0 | NO-BREAK SPACE
           A1 |  00000104 | LATIN CAPITAL LETTER A WITH OGONEK
           A2 |  00000138 | LATIN SMALL LETTER KRA (Greenlandic)
           A3 |  00000156 | LATIN CAPITAL LETTER R WITH CEDILLA
           A4 |  000000A4 | CURRENCY SIGN
           A5 |  00000128 | LATIN CAPITAL LETTER I WITH TILDE
           A6 |  0000013B | LATIN CAPITAL LETTER L WITH CEDILLA
           A7 |  000000A7 | SECTION SIGN
           A8 |  000000A8 | DIAERESIS
           A9 |  00000160 | LATIN CAPITAL LETTER S WITH CARON
           AA |  00000112 | LATIN CAPITAL LETTER E WITH MACRON
           AB |  00000122 | LATIN CAPITAL LETTER G WITH CEDILLA
           AC |  00000166 | LATIN CAPITAL LETTER T WITH STROKE
           AD |  000000AD | SOFT HYPHEN
           AE |  0000017D | LATIN CAPITAL LETTER Z WITH CARON
           AF |  000000AF | MACRON
           B0 |  000000B0 | DEGREE SIGN
           B1 |  00000105 | LATIN SMALL LETTER A WITH OGONEK
           B2 |  000002DB | OGONEK
           B3 |  00000157 | LATIN SMALL LETTER R WITH CEDILLA
           B4 |  000000B4 | ACUTE ACCENT
           B5 |  00000129 | LATIN SMALL LETTER I WITH TILDE
           B6 |  0000013C | LATIN SMALL LETTER L WITH CEDILLA
           B7 |  000002C7 | CARON (Mandarin Chinese third tone)
           B8 |  000000B8 | CEDILLA
           B9 |  00000161 | LATIN SMALL LETTER S WITH CARON
           BA |  00000113 | LATIN SMALL LETTER E WITH MACRON
           BB |  00000123 | LATIN SMALL LETTER G WITH CEDILLA
           BC |  00000167 | LATIN SMALL LETTER T WITH STROKE
           BD |  0000014A | LATIN CAPITAL LETTER ENG (Sami)
           BE |  0000017E | LATIN SMALL LETTER Z WITH CARON
           BF |  0000014B | LATIN SMALL LETTER ENG (Sami)
           C0 |  00000100 | LATIN CAPITAL LETTER A WITH MACRON
           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 |  0000012E | LATIN CAPITAL LETTER I WITH OGONEK
           C8 |  0000010C | LATIN CAPITAL LETTER C WITH CARON
           C9 |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           CA |  00000118 | LATIN CAPITAL LETTER E WITH OGONEK
           CB |  000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
           CC |  00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE
           CD |  000000CD | LATIN CAPITAL LETTER I WITH ACUTE
           CE |  000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
           CF |  0000012A | LATIN CAPITAL LETTER I WITH MACRON
           D0 |  00000110 | LATIN CAPITAL LETTER D WITH STROKE
           D1 |  00000145 | LATIN CAPITAL LETTER N WITH CEDILLA
           D2 |  0000014C | LATIN CAPITAL LETTER O WITH MACRON
           D3 |  00000136 | LATIN CAPITAL LETTER K WITH CEDILLA
           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 |  00000172 | LATIN CAPITAL LETTER U WITH OGONEK
           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 |  00000168 | LATIN CAPITAL LETTER U WITH TILDE
           DE |  0000016A | LATIN CAPITAL LETTER U WITH MACRON
           DF |  000000DF | LATIN SMALL LETTER SHARP S (German)
           E0 |  00000101 | LATIN SMALL LETTER A WITH MACRON
           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

few things worth clocking, bestie πŸ‘€ 0xA2 is that Greenlandic LATIN SMALL LETTER KRA, 0xBD and 0xBF are the Sami ENG pair, 0xB7 the caron doubles as the Mandarin Chinese third tone, 0xDF is the German LATIN SMALL LETTER SHARP S, and the DIAERESIS / MACRON / ACUTE ACCENT / CEDILLA / OGONEK / CARON entries at 0xA8, 0xAF, 0xB4, 0xB8, 0xB2 and 0xB7 are the standalone combining-ish accent characters sitting right there among the letters πŸ¦‹

and we're literally only at E6 β€” the table keeps rolling, stay with me 🫢

E7 |  0000012F | LATIN SMALL LETTER I WITH OGONEK
E8 |  0000010D | LATIN SMALL LETTER C WITH CARON
E9 |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
EA |  00000119 | LATIN SMALL LETTER E WITH OGONEK
EB |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
EC |  00000117 | LATIN SMALL LETTER E WITH DOT ABOVE
ED |  000000ED | LATIN SMALL LETTER I WITH ACUTE
EE |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
EF |  0000012B | LATIN SMALL LETTER I WITH MACRON
F0 |  00000111 | LATIN SMALL LETTER D WITH STROKE
F1 |  00000146 | LATIN SMALL LETTER N WITH CEDILLA
F2 |  0000014D | LATIN SMALL LETTER O WITH MACRON
F3 |  00000137 | LATIN SMALL LETTER K WITH CEDILLA
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 |  00000173 | LATIN SMALL LETTER U WITH OGONEK
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 |  00000169 | LATIN SMALL LETTER U WITH TILDE
FE |  0000016B | LATIN SMALL LETTER U WITH MACRON
FF |  000002D9 | DOT ABOVE (Mandarin Chinese light tone)

Okay bestie, that's the bottom chunk of the table right there πŸ’… from E7 all the way down to FF, and honestly? The last row ate. FF is 000002D9, which is the DOT ABOVE used for the Mandarin Chinese light tone β€” yes, in an ISO-8859-4 page, iconic crossover behavior, we love a multilingual queen 🫢. And F7 is just the plain old DIVISION SIGN, no letters, no accent drama, just math doing its thing ✨.

Also can we talk about how E9 is literally 000000E9? Baby's first round trip β€” the byte and the codepoint match exactly, highkey satisfying πŸŽ€. And then F0 is 00000111 (LATIN SMALL LETTER D WITH STROKE) and F1 is 00000146 (LATIN SMALL LETTER N WITH CEDILLA) just out here living their best non-obvious lives 😭.


πŸ‘‘ 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!

Not me pointing out that the source page fr fr says "See the source code for details!code for details!" β€” yeah, the code for details! got duplicated. That's the original, verbatim, so I'm keeping it πŸ’€ no cap, that's genuinely what's on the page, and Guido's copyright says all rights reserved.

🌈 SEE ALSO

Go read those next, bestie, that's the whole friend group πŸ¦‹βœ¨


And that's a wrap on the whole page πŸŽ€πŸ’– This version is perl v5.42.0, dated 2025-01-22, and it's the Locale:..._8859_4(3) page from Perl's user-contributed documentation. Slay, go forth and decode your bytes responsibly πŸ§šπŸ’œ