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:


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 πŸ§šπŸ’œ