Locale:...:IBM866(3)
π¦ Locale::RecodeData::IBM866(3) β from the User Contributed Perl Documentation π¦
okay bestie so this is a page out of the User Contributed Perl Documentation, and the star of the show is Locale::RecodeData::IBM866(3). it's giving very niche, very internal, very "you probably got here by accident" energy, and honestly? we love that for it.
β¨ NAME β¨
Locale::RecodeData::IBM866 β literally just conversion routines for IBM866. that's it, that's the whole vibe. π
πΈ SYNOPSIS πΈ
This module is internal to libintl. Do not use directly!
so like. no cap. this whole module belongs to libintl and it's an internal thing β please do not come for it and use it directly, bestie, i am begging π«Ά it's a backstage module. it does not want main character energy.
π DESCRIPTION π
this module is generated β like, auto-made, not hand-crafted artisanal code β and what it contains is the conversion tables and routines for IBM866. that's the whole deal. tables β¨ routines β¨ IBM866 β¨. iconic, honestly.
π COMMENTS π
the following comments were extracted from the original charmap, and we are preserving them exactly because they are lore:
automatically generated from the charDB
alias CP866
alias 866
so the charmap says it was automatically generated from the charDB, and it gives us two aliases: CP866 and 866.
β οΈ heads up though β please note that aliases listed above are not necessarily valid! like, they're listed, sure, but don't just assume they work. do your own vibe check on that one. π
π CHARACTER TABLE π
okay so the following table is sorted in the same order as the original charmap β we're not out here reordering anything, we respect the original arrangement. π§
all character codes are in hexadecimal, fr fr. no decimals in this house.
and one very important reading instruction: please read ISO-10646 as ISO-10646-UCS4. same thing, different name tag. β
β¦and that's where part 1 wraps β the actual table is coming at you next, so stay tuned bestie ππ₯
Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
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
okay so first up: 00 through 1F, the control-character era. No glyphs, no vibes, just pure behavior. 00 is NULL, 07 is BELL (yes, the one that used to actually beep at you π), 09 is HORIZONTAL TABULATION, 0A is LINE FEED, 0D is CARRIAGE RETURN, and 1B is ESCAPE β the icon of the whole block tbh π. Everything from 10 to 1F is DEVICE CONTROL numbers and separator drama, and it's giving "machine talking to machine, none of your business" energy. Respect it.
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
this is the section you already know in your bones bestie π <cyan>20</cyan>β7F is straight-up ASCII, mapped one-to-one onto the same ISO-10646 code points, so 41 is LATIN CAPITAL LETTER A and 61 is LATIN SMALL LETTER A and nothing here is a surprise. 20 is SPACE, 2D is HYPHEN-MINUS (the original hyphen, the blueprint, the blueprint that ate π
), 40 is COMMERCIAL AT, 5C is REVERSE SOLIDUS, and 7F is DELETE, sitting at the end like the bouncer of the block. Obsessed with the consistency.
80 | 00000410 | CYRILLIC CAPITAL LETTER A
81 | 00000411 | CYRILLIC CAPITAL LETTER BE
82 | 00000412 | CYRILLIC CAPITAL LETTER VE
83 | 00000413 | CYRILLIC CAPITAL LETTER GHE
84 | 00000414 | CYRILLIC CAPITAL LETTER DE
85 | 00000415 | CYRILLIC CAPITAL LETTER IE
86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
87 | 00000417 | CYRILLIC CAPITAL LETTER ZE
88 | 00000418 | CYRILLIC CAPITAL LETTER I
89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
8A | 0000041A | CYRILLIC CAPITAL LETTER KA
8B | 0000041B | CYRILLIC CAPITAL LETTER EL
8C | 0000041C | CYRILLIC CAPITAL LETTER EM
8D | 0000041D | CYRILLIC CAPITAL LETTER EN
8E | 0000041E | CYRILLIC CAPITAL LETTER O
8F | 0000041F | CYRILLIC CAPITAL LETTER PE
90 | 00000420 | CYRILLIC CAPITAL LETTER ER
91 | 00000421 | CYRILLIC CAPITAL LETTER ES
92 | 00000422 | CYRILLIC CAPITAL LETTER TE
93 | 00000423 | CYRILLIC CAPITAL LETTER U
94 | 00000424 | CYRILLIC CAPITAL LETTER EF
95 | 00000425 | CYRILLIC CAPITAL LETTER HA
96 | 00000426 | CYRILLIC CAPITAL LETTER TSE
97 | 00000427 | CYRILLIC CAPITAL LETTER CHE
98 | 00000428 | CYRILLIC CAPITAL LETTER SHA
99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
9B | 0000042B | CYRILLIC CAPITAL LETTER YERU
9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
9D | 0000042D | CYRILLIC CAPITAL LETTER E
9E | 0000042E | CYRILLIC CAPITAL LETTER YU
9F | 0000042F | CYRILLIC CAPITAL LETTER YA
and 80β9F is where IBM866 switches all the way up π β this is the Cyrillic capital block, no cap. It runs 00000410 (CYRILLIC CAPITAL LETTER A) up through 0000042F (CYRILLIC CAPITAL LETTER YA), and yes, the whole alphabet shows up: BE, VE, GHE, DE, IE, ZHE, ZE, I, SHORT I, KA, EL, EM, EN, O, PE, ER, ES, TE, U, EF, HA, TSE, CHE, SHA, SHCHA, then the signs β HARD SIGN, YERU, SOFT SIGN β and finally E, YU, YA. it's giving full alphabet main character energy π
A0 | 00000430 | CYRILLIC SMALL LETTER A
A1 | 00000431 | CYRILLIC SMALL LETTER BE
A2 | 00000432 | CYRILLIC SMALL LETTER VE
A3 | 00000433 | CYRILLIC SMALL LETTER GHE
A4 | 00000434 | CYRILLIC SMALL LETTER DE
A5 | 00000435 | CYRILLIC SMALL LETTER IE
A6 | 00000436 | CYRILLIC SMALL LETTER ZHE
A7 | 00000437 | CYRILLIC SMALL LETTER ZE
A8 | 00000438 | CYRILLIC SMALL LETTER I
A9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
AA | 0000043A | CYRILLIC SMALL LETTER KA
AB | 0000043B | CYRILLIC SMALL LETTER EL
AC | 0000043C | CYRILLIC SMALL LETTER EM
AD | 0000043D | CYRILLIC SMALL LETTER EN
AE | 0000043E | CYRILLIC SMALL LETTER O
AF | 0000043F | CYRILLIC SMALL LETTER PE
then A0βAF is the lowercase era of the same alphabet π <red>00000430isCYRILLIC SMALL LETTER A, and it marches straight through BE, VE, GHE, DE, IE, ZHE, ZE, I, SHORT I, KA, EL, EM, EN, O, and PEatAF. notice the pattern queen: each lowercase sits exactly 0x20above its uppercase sibling,0410β0430` and so on. consistency is a love language β¨
B0 | 00002591 | LIGHT SHADE
B1 | 00002592 | MEDIUM SHADE
B2 | 00002593 | DARK SHADE
B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
DB | 00002588 | FULL BLOCK
DC | 00002584 | LOWER HALF BLOCK
DD | 0000258C | LEFT HALF BLOCK
DE | 00002590 | RIGHT HALF BLOCK
DF | 00002580 | UPPER HALF BLOCK
okay THIS is the section that made you fall in love with DOS-era art, don't even lie πΌοΈ B0, B1, B2 are the shades β LIGHT SHADE, MEDIUM SHADE, DARK SHADE β and then B3 through DA is just an unhinged amount of BOX DRAWINGS, every single light/double/single permutation the committee could dream up. LIGHT VERTICAL, LIGHT VERTICAL AND LEFT, VERTICAL SINGLE AND LEFT DOUBLE, VERTICAL DOUBLE AND LEFT SINGLE, DOUBLE VERTICAL AND HORIZONTAL at CE (the crown jewel, the icon, the one you actually use π), MIXED combos for days, and then D9/DA bring back LIGHT UP AND LEFT and LIGHT DOWN AND RIGHT to close the loop. then DBβDF is blocks only: FULL BLOCK, LOWER HALF BLOCK, LEFT HALF BLOCK, RIGHT HALF BLOCK, UPPER HALF BLOCK. it's giving "I built a whole TUI in 1993 and it ate π
"
E0 | 00000440 | CYRILLIC SMALL LETTER ER
E1 | 00000441 | CYRILLIC SMALL LETTER ES
E2 | 00000442 | CYRILLIC SMALL LETTER TE
E3 | 00000443 | CYRILLIC SMALL LETTER U
E4 | 00000444 | CYRILLIC SMALL LETTER EF
E5 | 00000445 | CYRILLIC SMALL LETTER HA
E6 | 00000446 | CYRILLIC SMALL LETTER TSE
E7 | 00000447 | CYRILLIC SMALL LETTER CHE
E8 | 00000448 | CYRILLIC SMALL LETTER SHA
and right at E0 we're back to Cyrillic lowercase β but not from the start, no ma'am, we're picking up mid-alphabet π¦ E0 is CYRILLIC SMALL LETTER ER (00000440), E1 is ES, E2 is TE, E3 is U, E4 is EF, E5 is HA, E6 is TSE, E7 is CHE, and E8 is SHA β and then our cut-off happens, because the table keeps rolling and we're literally mid-ride here π the double-width horizontal boxes got their moment, the lowercase Cyrillic got its sequel, and there's still name to be named right after SHA... so yeah, hold that thought bestie, the map continues right where we stopped π
E9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
EA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
EB | 0000044B | CYRILLIC SMALL LETTER YERU
EC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
ED | 0000044D | CYRILLIC SMALL LETTER E
EE | 0000044E | CYRILLIC SMALL LETTER YU
EF | 0000044F | CYRILLIC SMALL LETTER YA
F0 | 00000401 | CYRILLIC CAPITAL LETTER IO
F1 | 00000451 | CYRILLIC SMALL LETTER IO
F2 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
F3 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
F4 | 00000407 | CYRILLIC CAPITAL LETTER YI
F5 | 00000457 | CYRILLIC SMALL LETTER YI
F6 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
F7 | 0000045E | CYRILLIC SMALL LETTER SHORT U
F8 | 000000B0 | DEGREE SIGN
F9 | 00002219 | BULLET OPERATOR
FA | 000000B7 | MIDDLE DOT
FB | 0000221A | SQUARE ROOT
FC | 00002116 | NUMERO SIGN
FD | 000000A4 | CURRENCY SIGN
FE | 000025A0 | BLACK SQUARE
FF | 000000A0 | NO-BREAK SPACE
And that's a wrap on the table bestie π
the entire 00βFF range, accounted for, nothing ghosted, nothing left on read. Slay. β¨
π 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!
Ok so quick heads-up: that doubled-up "details!code for details!" at the end? That's literally what's in the source, no cap β I'm not out here editing the author's own words, I'm just reading them to you. π Respect the original text, always. π«Ά
π SEE ALSO π
Locale::RecodeData(3)β the data layer, i.e. where these character tables actually live πLocale::Recode(3)β the actual recoding machinery, the main character of this whole saga πperl(1)β yeah. perl. the parent. the icon. πΈ
okay that's the whole page, you made it, I'm so proud of you fr fr π go forth and convert your Cyrillic with confidence, bestie, the table has your back π
this lil transmission was brought to you by perl v5.42.0, dated 2025-01-22 β mwah, catch you in the next manpage π¦β¨
π¦ 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