Locale:...ata::CWI(3)
okay so this is Locale::RecodeData::CWI(3) from the User Contributed Perl Documentation β and itβs all about conversion routines for CWI. bestie, itβs giving internal-module energy, so buckle up. π
β¨
π NAME π
Locale::RecodeData::CWI β conversion routines for CWI. thatβs the whole vibe. π
β¨ SYNOPSIS β¨
no cap, this module is internal to libintl. do not use it directly! π«Ά
This module is internal to libintl. Do not use directly!
πΈ DESCRIPTION πΈ
This module is generated, and it contains the conversion tables and routines for CWI. literally does what it says on the tin. π¦
π COMMENTS π
The following comments have been extracted from the original charmap:
version: 1.0
source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29
alias CWI-2
alias CP-HU
Please note that aliases listed above are not necessarily valid! π so donβt just assume theyβre all good to go.
π₯ CHARACTER TABLE π₯
The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. πβ
okay so we're deep in the table now, and before your eyes glaze over let me remind you how to read it π«Ά three columns: the local byte (hex, two digits, no 0x because we're fancy), the ISO-10646 code point (that's the Unicode number, padded out to eight digits), and then the actual description of what that character is. Read it left to right and you're basically translating a legacy byte into a Unicode character. That's the whole vibe. π
Here's the bottom half-ish β the control zone and all of plain old ASCII, i.e. everything you can type without crying:
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)
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)
iconic honestly π everything up to 7F is a straight match to Unicode, no plot twists. 00β1F are the old-school control characters (yes, BEL at 07 literally rang a bell, LF at 0A and CR at 0D are the ones still ruining your day), then 20 is a plain SPACE, 30β39 are DIGIT ZERO through DIGIT NINE, 41β5A the capital letters, 61β7A the lowercase ones, and 7F is DELETE (DEL). periodt. β¨
okay NOW the fun part, 80 and up, where the local byte and the ISO-10646 number stop agreeing and honestly? that's where all the character lives π accented letters, currency, the box-drawing saga, all of it:
80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
8D | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
8F | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
91 | 000000E6 | LATIN SMALL LETTER AE
92 | 000000C6 | LATIN CAPITAL LETTER AE
93 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
95 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
96 | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
97 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
98 | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
9B | 000000A2 | CENT SIGN
9C | 000000A3 | POUND SIGN
9D | 000000A5 | YEN SIGN
9E | 000020A7 | PESETA SIGN
9F | 0000E01F | HUNGARIAN FLORINTH (CWI_9F)
A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
A6 | 000000AA | FEMININE ORDINAL INDICATOR
A7 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
A8 | 000000BF | INVERTED QUESTION MARK
A9 | 00002310 | REVERSED NOT SIGN
AA | 000000AC | NOT SIGN
AB | 000000BD | VULGAR FRACTION ONE HALF
AC | 000000BC | VULGAR FRACTION ONE QUARTER
AD | 000000A1 | INVERTED EXCLAMATION MARK
AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
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
E0 | 000003B1 | GREEK SMALL LETTER ALPHA
not me getting emotional over 9F π it's the one row that breaks the pattern: instead of a plain codepoint it says HUNGARIAN FLORINTH (CWI_9F), codepoint 0000E01F, and that (CWI_9F) tag in the description is literally part of the name here β that's this table's whole personality, iykyk. π
also clock the little moments: 93, 96, 98, A7 are the DOUBLE ACUTE letters and their ISO-10646 values are 00000151, 00000171, 00000170, 00000150 β way up past the rest of the Latin-1 crew, which all hang out in the 000000C0β000000FC zone. main character energy. π 9E is PESETA SIGN at 000020A7, A9 is a genuinely unhinged REVERSED NOT SIGN at 00002310, and AB/AC are out here calling themselves VULGAR FRACTION ONE HALF and VULGAR FRACTION ONE QUARTER β the drama. π
and then B3 through DF is just... an entire box-drawing saga π₯ forty-something rows of BOX DRAWINGS in every light/double/single/up/down/horizontal/vertical combo imaginable, one FULL BLOCK, four half blocks, and then E0 hits you with GREEK SMALL LETTER ALPHA at 000003B1 like a plot twist nobody asked for. ngl I respect it.
and we're still mid-table β the local bytes keep climbing past E0, so hold that thought bestie, there's more π
E1 | 000003B2 | GREEK SMALL LETTER BETA
E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
E3 | 000003C0 | GREEK SMALL LETTER PI
E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
E5 | 000003C3 | GREEK SMALL LETTER SIGMA
E6 | 000003BC | GREEK SMALL LETTER MU
E7 | 000003C4 | GREEK SMALL LETTER TAU
E8 | 000003A6 | GREEK CAPITAL LETTER PHI
E9 | 00000398 | GREEK CAPITAL LETTER THETA
EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
EB | 000003B4 | GREEK SMALL LETTER DELTA
EC | 0000221E | INFINITY
ED | 00002205 | EMPTY SET
EE | 000003B5 | GREEK SMALL LETTER EPSILON
EF | 00002229 | INTERSECTION
F0 | 00002261 | IDENTICAL TO
F1 | 000000B1 | PLUS-MINUS SIGN
F2 | 00002265 | GREATER-THAN OR EQUAL TO
F3 | 00002264 | LESS-THAN OR EQUAL TO
F4 | 00002320 | TOP HALF INTEGRAL
F5 | 00002321 | BOTTOM HALF INTEGRAL
F6 | 000000F7 | DIVISION SIGN
F7 | 00002248 | ALMOST EQUAL TO
F8 | 00002218 | RING OPERATOR
F9 | 000000B7 | MIDDLE DOT
FA | 00002022 | BULLET
FB | 0000221A | SQUARE ROOT
FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER n
FD | 000000B2 | SUPERSCRIPT TWO
FE | 000025A0 | BLACK SQUARE
FF | 000000A0 | NO-BREAK SPACE
Like, that's the whole upper half of the table, bestie β Greek letters galore, plus every math symbol your little heart desires β¨ We're talking INFINITY, EMPTY SET, INTERSECTION, IDENTICAL TO, PLUS-MINUS SIGN, GREATER-THAN OR EQUAL TO, LESS-THAN OR EQUAL TO, TOP HALF INTEGRAL, BOTTOM HALF INTEGRAL, DIVISION SIGN, ALMOST EQUAL TO, RING OPERATOR, MIDDLE DOT, BULLET, SQUARE ROOT, SUPERSCRIPT LATIN SMALL LETTER n, SUPERSCRIPT TWO, BLACK SQUARE, and finally NO-BREAK SPACE sitting at FF like the main character it is π
π AUTHOR π
Okay so the legal bits, and yes we're reading them because we respect the work π«Ά
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!
Real talk: that's<http://www.guido-flohr.net/>for the website and<mailto:guido.flohr@cantanea.com>if you wanna email, and yeah β all rights reserved, so don't go thinking this is a free-for-all. For the full tea you gotta see the source code for details. Periodt π
π SEE ALSO π
Go read your siblings, they're iconic too:
Locale::RecodeData(3)β the data-side bestie πLocale::Recode(3)β the actual recoding one, lowkey the main event π¦perl(1)β the mothership, obviously π
And that's a wrap on this whole page, babes! πΈ This legend shipped as perl v5.42.0, dated 2025-01-22, and it's filed under Locale:...ata::CWI(3) β so next time somebody asks you about CWI charset mappings you can just point at this and say iykyk πβ¨ Go forth and recode responsibly π§π
π¦ 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