Locale:...EC_P27_1(3)

πŸ’– NAME πŸ’–

okay so bestie, this is Locale::RecodeData::IEC_P27_1 β€” literally just conversion routines for IEC_P27_1. that's it, that's the whole vibe ✨

this page lives in the User Contributed Perl Documentation section, and the header on it reads Locale:...EC_P27_1(3) β€” iconique, we love a truncated header πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

ngl this is the important part, so read it twice:

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

like. do not use it directly. i'm so serious. it's giving "staff only" door energy πŸ’…


🌸 DESCRIPTION 🌸

so this module is generated (not hand-written, bestie, a machine made it) and it contains the conversion tables and routines for IEC_P27-1. that's the whole job. lowkey iconic of it 🫢


πŸŽ€ COMMENTS πŸŽ€

the following comments were extracted from the original charmap, and yes i'm including them verbatim because they ate:

 version: 1.0
  source: ECMA registry
 alias ISO-IR-143
⚠️ okay important heads-up: please note that the aliases listed above are not necessarily valid! like, don't just trust them blindly, bestie 😭

πŸ‘‘ CHARACTER TABLE πŸ‘‘

the following table is sorted in the same order as the original charmap β€” no reshuffling, no funny business, periodt πŸ’…

all character codes are in hexadecimal, fr fr. and please read ISO-10646 as ISO-10646-UCS4 β€” that's the rule, i don't make them, i just relay them 🌈


(more coming, bestie β€” this was just part 1 🧚)

okay so picking right back up with the character table πŸ’… β€” and bestie, we are going row by row, all of it, because every single one of these little guys is somebody's fave and we don't do "etc." in this house.

Quick refresher on what you're looking at: three columns, Local (the byte you actually see), ISO-10646 (the code point behind it), and Description (the name). Here's the header in all its glory ✨

        Local | ISO-10646 | Description
       -------+-----------+-------------------------------------------------

🫢 0x00–0x1F β€” the control characters

okay so these are the non-printing ones, the invisible girlies, the ones that make your terminal do stuff instead of showing stuff. The pattern is chef's kiss consistent: 00 local lines up with 00000000, 01 with 00000001, and so on β€” the low byte just echoes the local column the whole way down. No cap πŸ”₯

           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)

not me reading DEVICE CONTROL ONE through FOUR like they're a girl group lineup 😭 and FILE SEPARATOR (IS4) going down to UNIT SEPARATOR (IS1) while the numbers go up?? the way that 1C–1F is numbered backwards is so unserious of them. anyway πŸ’€


πŸŽ€ 0x20–0x3F β€” space, punctuation, and the digits

the moment the table starts showing you actual visible characters!! 20 is a whole SPACE (yes it counts, she's a character too, respect her πŸ‘‘), and then it's straight into punctuation city. Also note the digits start at 30 and count up in order β€” DIGIT ZERO through DIGIT NINE, one per byte, 00000030 to 00000039. iconic behaviour, no notes ⭐

           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

2D being HYPHEN-MINUS is lowkey the most honest name in this whole table like yes bestie you are both, we get it πŸ’€


πŸ’œ 0x40–0x5F β€” @ and then the alphabet (caps edition)

40 is COMMERCIAL AT β€” the at-sign, the email girlie, the one who shows up in every cron line you've ever written β€” and then 41 through 5A is LATIN CAPITAL LETTER A through Z, clean, in order, no drama. After Z it's brackets and the rest of the punctuation squad πŸ¦‹

           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

LOW LINE is the underscore and I just think that's such a demure name for the character that lives in every single snake_case variable ever 🌸


🧚 0x60–0x7F β€” lowercase everything + the big delete

backtick first (GRAVE ACCENT, 60), then 61–7A is LATIN SMALL LETTER A through Z β€” lowercase slay πŸ’… β€” then more brackets, then 7E TILDE, and finally 7F DELETE (DEL) just sitting there at the end of the block like a bouncer.

           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 way VERTICAL LINE is just the pipe character and gets the most dramatic-sounding name possible 😭 7C my beloved.


πŸ™ˆ 0x80–0x9F β€” the other control block

plot twist bestie: it's not over. 80–9F is another run of control characters, and notice how the ISO-10646 column still matches the local byte one-for-one β€” 00000080 through 0000009F. Same pattern as the top of the table. The way that consistency ate πŸ“

           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)

PRIVACY MESSAGE (PM)?? ma'am this is a character table 😭 and CANCEL CHARACTER (CCH) vs plain old CANCEL (CAN) up in 18 β€” two different cancels, we contain multitudes.


πŸ”₯ 0xA0–0xBF β€” the math girlies enter

this is where it gets fun. from here on the ISO-10646 column stops matching the local byte β€” A0 maps to 000002C7, not 000000A0. The first one is a CARON (Mandarin Chinese third tone) which is such a specific and iconic way to open a math block 🌈 and then it's just symbols, symbols, symbols β€” IDENTICAL TO, LOGICAL AND, LOGICAL OR, set theory everywhere, then arrows, then a pile of comparison operators, INTEGRAL, CONTOUR INTEGRAL, INFINITY, NABLA, PARTIAL DIFFERENTIAL… the calculus girlies are fed today πŸ‘‘

           A0 |  000002C7 | CARON (Mandarin Chinese third tone)
           A1 |  00002261 | IDENTICAL TO
           A2 |  00002227 | LOGICAL AND
           A3 |  00002228 | LOGICAL OR
           A4 |  00002229 | INTERSECTION
           A5 |  0000222A | UNION
           A6 |  00002282 | SUBSET OF
           A7 |  00002283 | SUPERSET OF
           A8 |  000021D0 | LEFTWARDS DOUBLE ARROW
           A9 |  000021D2 | RIGHTWARDS DOUBLE ARROW
           AA |  00002234 | THEREFORE
           AB |  00002235 | BECAUSE
           AC |  00002208 | ELEMENT OF
           AD |  0000220B | CONTAINS AS MEMBER
           AE |  00002286 | SUBSET OF OR EQUAL TO
           AF |  00002287 | SUPERSET OF OR EQUAL TO
           B0 |  0000222B | INTEGRAL
           B1 |  0000222E | CONTOUR INTEGRAL
           B2 |  0000221E | INFINITY
           B3 |  00002207 | NABLA
           B4 |  00002202 | PARTIAL DIFFERENTIAL
           B5 |  0000223C | TILDE OPERATOR
           B6 |  00002248 | ALMOST EQUAL TO
           B7 |  00002243 | ASYMPTOTICALLY EQUAL TO
           B8 |  00002245 | APPROXIMATELY EQUAL TO
           B9 |  00002264 | LESS-THAN OR EQUAL TO
           BA |  00002260 | NOT EQUAL TO
           BB |  00002265 | GREATER-THAN OR EQUAL TO
           BC |  00002194 | LEFT RIGHT ARROW
           BD |  000000AC | NOT SIGN
           BE |  00002200 | FOR ALL
           BF |  00002203 | THERE EXISTS

the way there are three separate "kinda equal" entries β€” ALMOST EQUAL TO, ASYMPTOTICALLY EQUAL TO, APPROXIMATELY EQUAL TO β€” and none of them are the same sign 😭 mathematicians really said "we need nuance" πŸ’€


πŸ‘‘ 0xC0–0xDF β€” Greek caps, geometry, and a Hebrew letter

C0 is a whole curveball β€” HEBREW LETTER ALEF (000005D0) β€” then WHITE SQUARE, PARALLEL TO, and from C3 the Greek capitals roll in: GAMMA, DELTA, THETA, LAMDA, XI, PI, SIGMA, UPSILON, PHI, PSI, OMEGA. plus angle brackets, PRIME and DOUBLE PRIME, MINUS-OR-PLUS SIGN, superscripts two and three, MULTIPLICATION SIGN, MIDDLE DOT, EMPTY SET, a RIGHTWARDS HARPOON WITH BARB UPWARDS, SQUARE ROOT, LATIN SMALL LETTER F WITH HOOK, PROPORTIONAL TO, and PLUS-MINUS SIGN. a lot happening and I'm obsessed πŸ¦‹

           C0 |  000005D0 | HEBREW LETTER ALEF
           C1 |  000025A1 | WHITE SQUARE
           C2 |  00002225 | PARALLEL TO
           C3 |  00000393 | GREEK CAPITAL LETTER GAMMA
           C4 |  00000394 | GREEK CAPITAL LETTER DELTA
           C5 |  000022A5 | UP TACK
           C6 |  00002220 | ANGLE
           C7 |  0000221F | RIGHT ANGLE
           C8 |  00000398 | GREEK CAPITAL LETTER THETA
           C9 |  00002329 | LEFT-POINTING ANGLE BRACKET
           CA |  0000232A | RIGHT-POINTING ANGLE BRACKET
           CB |  0000039B | GREEK CAPITAL LETTER LAMDA
           CC |  00002032 | PRIME
           CD |  00002033 | DOUBLE PRIME
           CE |  0000039E | GREEK CAPITAL LETTER XI
           CF |  00002213 | MINUS-OR-PLUS SIGN
           D0 |  000003A0 | GREEK CAPITAL LETTER PI
           D1 |  000000B2 | SUPERSCRIPT TWO
           D2 |  000003A3 | GREEK CAPITAL LETTER SIGMA
           D3 |  000000D7 | MULTIPLICATION SIGN
           D4 |  000000B3 | SUPERSCRIPT THREE
           D5 |  000003A5 | GREEK CAPITAL LETTER UPSILON
           D6 |  000003A6 | GREEK CAPITAL LETTER PHI
           D7 |  000000B7 | MIDDLE DOT
           D8 |  000003A8 | GREEK CAPITAL LETTER PSI
           D9 |  000003A9 | GREEK CAPITAL LETTER OMEGA
           DA |  00002205 | EMPTY SET
           DB |  000021C0 | RIGHTWARDS HARPOON WITH BARB UPWARDS
           DC |  0000221A | SQUARE ROOT
           DD |  00000192 | LATIN SMALL LETTER F WITH HOOK
           DE |  0000221D | PROPORTIONAL TO
           DF |  000000B1 | PLUS-MINUS SIGN

note that it's spelled LAMDA both times (CB and later EB) β€” that's the table's spelling, keep it, don't come for me πŸ™ˆ


🌸 0xE0–0xF8 β€” degree, lowercase Greek, and the last rows

E0 DEGREE SIGN, E1–E9 runs GREEK SMALL LETTER ALPHA through IOTA, then KAPPA, LAMDA, MU, NU, XI, a PER MILLE SIGN sneaking in at EF like it's not surrounded by Greek πŸŽ€ then PI, RHO, SIGMA, DIVISION SIGN, and TAU through PSI to close us out at F8.

           E0 |  000000B0 | DEGREE SIGN
           E1 |  000003B1 | GREEK SMALL LETTER ALPHA
           E2 |  000003B2 | GREEK SMALL LETTER BETA
           E3 |  000003B3 | GREEK SMALL LETTER GAMMA
           E4 |  000003B4 | GREEK SMALL LETTER DELTA
           E5 |  000003B5 | GREEK SMALL LETTER EPSILON
           E6 |  000003B6 | GREEK SMALL LETTER ZETA
           E7 |  000003B7 | GREEK SMALL LETTER ETA
           E8 |  000003B8 | GREEK SMALL LETTER THETA
           E9 |  000003B9 | GREEK SMALL LETTER IOTA
           EA |  000003BA | GREEK SMALL LETTER KAPPA
           EB |  000003BB | GREEK SMALL LETTER LAMDA
           EC |  000003BC | GREEK SMALL LETTER MU
           ED |  000003BD | GREEK SMALL LETTER NU
           EE |  000003BE | GREEK SMALL LETTER XI
           EF |  00002030 | PER MILLE SIGN
           F0 |  000003C0 | GREEK SMALL LETTER PI
           F1 |  000003C1 | GREEK SMALL LETTER RHO
           F2 |  000003C3 | GREEK SMALL LETTER SIGMA
           F3 |  000000F7 | DIVISION SIGN
           F4 |  000003C4 | GREEK SMALL LETTER TAU
           F5 |  000003C5 | GREEK SMALL LETTER UPSILON
           F6 |  000003C6 | GREEK SMALL LETTER PHI
           F7 |  000003C7 | GREEK SMALL LETTER CHI
           F8 |  000003C8 | GREEK SMALL LETTER PSI

and that's the table, every single row, nothing skipped, not even the harpoon 🫢 the next chunk has more for you, so stay with me ✨

okay bestie, last seven rows of the table β€” same three columns, copy-exact energy πŸ’…:

F9 |  000003C9 | GREEK SMALL LETTER OMEGA
FA |  00002020 | DAGGER
FB |  00002190 | LEFTWARDS ARROW
FC |  00002191 | UPWARDS ARROW
FD |  00002192 | RIGHTWARDS ARROW
FE |  00002193 | DOWNWARDS ARROW
FF |  0000203E | OVERLINE

πŸ’– AUTHOR πŸ’–

the copyright tea is literally this, all rights reserved, and yes β€” that doubled code for details! is in the original, bestie πŸ™ˆ:

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!

πŸ¦‹ SEE ALSO πŸ¦‹

go read these next, bestie β€” required-reading energy fr fr:


and that’s the page, bestie! the footer says perl v5.42.0, dated 2025-01-22 β€” mwah πŸ’‹βœ¨