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 πβ¨
π¦ 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