Locale:...:VISCII(3)
π Locale::RecodeData::VISCII(3) π
Okay so welcome to the Locale::RecodeData::VISCII(3) page, bestie β it's from the User Contributed Perl Documentation, and it's giving very "internal module, do not perceive her" energy. Buckle up. π
πΈ NAME πΈ
Locale::RecodeData::VISCII β Conversion routines for VISCII. That's literally the whole name section, and honestly? Iconic. β¨
π¦ SYNOPSIS π¦
This module is internal to libintl. Do not use directly!
No cap, that's the entire synopsis. It's highkey a "do not touch" warning, and we respect it. π
π DESCRIPTION π
This module is generated and contains the conversion tables and routines for VISCII. Generated. Tables. Routines. We love a lowkey auto-generated queen. π
And yes, the description literally contains the string =head1 CHARACTER TABLE sitting right there in it. Not me pointing out a POD artifact β it's just part of the text, bestie. π
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? π
Okay so real talk β this next bit is the actual byte map, and it's lowkey the main character of the whole page π. Every entry below is Local byte β ISO-10646 codepoint β what it is. Don't skip it, bestie, this is the whole personality of the encoding π
The first chunk is giving "ASCII but make it Vietnamese" β you'll peep that a bunch of the slots that should be boring control characters are actually doing double duty as capital letters with hooks and tildes π not me losing it over 02:
Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
00 | 00000000 | NULL (NUL)
01 | 00000001 | START OF HEADING (SOH)
02 | 00001EB2 | LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
03 | 00000003 | END OF TEXT (ETX)
04 | 00000004 | END OF TRANSMISSION (EOT)
05 | 00001EB4 | LATIN CAPITAL LETTER A WITH BREVE AND TILDE
06 | 00001EAA | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
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 | 00001EF6 | LATIN CAPITAL LETTER Y WITH HOOK ABOVE
15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
16 | 00000016 | SYNCHRONOUS IDLE (SYN)
17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
18 | 00000018 | CANCEL (CAN)
19 | 00001EF8 | LATIN CAPITAL LETTER Y WITH TILDE
1A | 0000001A | SUBSTITUTE (SUB)
1B | 0000001B | ESCAPE (ESC)
1C | 0000001C | FILE SEPARATOR (IS4)
1D | 0000001D | GROUP SEPARATOR (IS3)
1E | 00001EF4 | LATIN CAPITAL LETTER Y WITH DOT BELOW
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
fr fr the 30β39 run is just DIGIT ZERO through DIGIT NINE, extremely normal, we love a stable stretch β¨
Then 40 through 7F is literally unhinged levels of well-behaved β this whole block is plain ASCII, capital letters, lowercase letters, brackets, backtick, tilde, DEL, all of it exactly where you'd expect. A whole vibe check passed π«Ά
Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
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)
Okay now this is where it gets iconic π. Everything from 80 up is the Vietnamese party zone β A WITH DOT BELOW, A WITH BREVE AND ACUTE, every circumflex-hook-tilde combo you could ever dream of, and the horn letters O WITH HORN / U WITH HORN showing up mid-block like they own the place π
Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
80 | 00001EA0 | LATIN CAPITAL LETTER A WITH DOT BELOW
81 | 00001EAE | LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
82 | 00001EB0 | LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
83 | 00001EB6 | LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
84 | 00001EA4 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
85 | 00001EA6 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
86 | 00001EA8 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
87 | 00001EAC | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
88 | 00001EBC | LATIN CAPITAL LETTER E WITH TILDE
89 | 00001EB8 | LATIN CAPITAL LETTER E WITH DOT BELOW
8A | 00001EBE | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
8B | 00001EC0 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
8C | 00001EC2 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
8D | 00001EC4 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
8E | 00001EC6 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
8F | 00001ED0 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
90 | 00001ED2 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
91 | 00001ED4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
92 | 00001ED6 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
93 | 00001ED8 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
94 | 00001EE2 | LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
95 | 00001EDA | LATIN CAPITAL LETTER O WITH HORN AND ACUTE
96 | 00001EDC | LATIN CAPITAL LETTER O WITH HORN AND GRAVE
97 | 00001EDE | LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
98 | 00001ECA | LATIN CAPITAL LETTER I WITH DOT BELOW
99 | 00001ECE | LATIN CAPITAL LETTER O WITH HOOK ABOVE
9A | 00001ECC | LATIN CAPITAL LETTER O WITH DOT BELOW
9B | 00001EC8 | LATIN CAPITAL LETTER I WITH HOOK ABOVE
9C | 00001EE6 | LATIN CAPITAL LETTER U WITH HOOK ABOVE
9D | 00000168 | LATIN CAPITAL LETTER U WITH TILDE
9E | 00001EE4 | LATIN CAPITAL LETTER U WITH DOT BELOW
9F | 00001EF2 | LATIN CAPITAL LETTER Y WITH GRAVE
A0 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
A1 | 00001EAF | LATIN SMALL LETTER A WITH BREVE AND ACUTE
A2 | 00001EB1 | LATIN SMALL LETTER A WITH BREVE AND GRAVE
A3 | 00001EB7 | LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
A4 | 00001EA5 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
A5 | 00001EA7 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
A6 | 00001EA9 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
A7 | 00001EAD | LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
A8 | 00001EBD | LATIN SMALL LETTER E WITH TILDE
A9 | 00001EB9 | LATIN SMALL LETTER E WITH DOT BELOW
AA | 00001EBF | LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
AB | 00001EC1 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
AC | 00001EC3 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
AD | 00001EC5 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
AE | 00001EC7 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
AF | 00001ED1 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
B0 | 00001ED3 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
B1 | 00001ED5 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
B2 | 00001ED7 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
B3 | 00001EE0 | LATIN CAPITAL LETTER O WITH HORN AND TILDE
B4 | 000001A0 | LATIN CAPITAL LETTER O WITH HORN
B5 | 00001ED9 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
B6 | 00001EDD | LATIN SMALL LETTER O WITH HORN AND GRAVE
B7 | 00001EDF | LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
B8 | 00001ECB | LATIN SMALL LETTER I WITH DOT BELOW
B9 | 00001EF0 | LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
BA | 00001EE8 | LATIN CAPITAL LETTER U WITH HORN AND ACUTE
BB | 00001EEA | LATIN CAPITAL LETTER U WITH HORN AND GRAVE
BC | 00001EEC | LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
BD | 000001A1 | LATIN SMALL LETTER O WITH HORN
BE | 00001EDB | LATIN SMALL LETTER O WITH HORN AND ACUTE
BF | 000001AF | LATIN CAPITAL LETTER U WITH HORN
btw bestie, peep 9D β 00000168 and A0 β 000000D5 and B4 β 000001A0 β those lucky few escaped the 1E00 range and are chilling in the plain Latin Extended-A / Latin-1 zone π they're fine, they're just different π
Last stretch for this part π β from C0 to D1, where the grave/acute/circumflex/tilde legends show up in force, plus D WITH STROKE at D0 looking all mysterious:
Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
C4 | 00001EA2 | LATIN CAPITAL LETTER A WITH HOOK ABOVE
C5 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
C6 | 00001EB3 | LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
C7 | 00001EB5 | LATIN SMALL LETTER A WITH BREVE AND TILDE
C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
CB | 00001EBA | LATIN CAPITAL LETTER E WITH HOOK ABOVE
CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
CE | 00000128 | LATIN CAPITAL LETTER I WITH TILDE
CF | 00001EF3 | LATIN SMALL LETTER Y WITH GRAVE
D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
D1 | 00001EE9 | LATIN SMALL LETTER U WITH HORN AND ACUTE
ngl theC0βC7run is a whole personality:Agrave, acute, circumflex, tilde, hook above, breve, then breves with hook above and tilde. ThenC8βCFdoes the same tour forE,IandYπ¦ andD0just shows up as a strokedDlike "hi I'm built different" π
and we're literally only at D1 β the map keeps going π
...and the mapping table keeps going, bestie β same deal as before, byte on the left, codepoint on the right, zero vibes lost π
D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
D5 | 00001EA1 | LATIN SMALL LETTER A WITH DOT BELOW
D6 | 00001EF7 | LATIN SMALL LETTER Y WITH HOOK ABOVE
D7 | 00001EEB | LATIN SMALL LETTER U WITH HORN AND GRAVE
D8 | 00001EED | LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
DB | 00001EF9 | LATIN SMALL LETTER Y WITH TILDE
DC | 00001EF5 | LATIN SMALL LETTER Y WITH DOT BELOW
DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
DE | 00001EE1 | LATIN SMALL LETTER O WITH HORN AND TILDE
DF | 000001B0 | LATIN SMALL LETTER U WITH HORN
E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
E4 | 00001EA3 | LATIN SMALL LETTER A WITH HOOK ABOVE
E5 | 00000103 | LATIN SMALL LETTER A WITH BREVE
E6 | 00001EEF | LATIN SMALL LETTER U WITH HORN AND TILDE
E7 | 00001EAB | LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
EB | 00001EBB | LATIN SMALL LETTER E WITH HOOK ABOVE
EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
EE | 00000129 | LATIN SMALL LETTER I WITH TILDE
EF | 00001EC9 | LATIN SMALL LETTER I WITH HOOK ABOVE
F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
F1 | 00001EF1 | LATIN SMALL LETTER U WITH HORN AND DOT BELOW
F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
F6 | 00001ECF | LATIN SMALL LETTER O WITH HOOK ABOVE
F7 | 00001ECD | LATIN SMALL LETTER O WITH DOT BELOW
F8 | 00001EE5 | LATIN SMALL LETTER U WITH DOT BELOW
F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
FB | 00000169 | LATIN SMALL LETTER U WITH TILDE
FC | 00001EE7 | LATIN SMALL LETTER U WITH HOOK ABOVE
FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
FE | 00001EE3 | LATIN SMALL LETTER O WITH HORN AND DOT BELOW
FF | 00001EEE | LATIN CAPITAL LETTER U WITH HORN AND TILDE
And that's the whole table, start to finish β FF is the last one, we're done, wrap it up π
π AUTHOR π
So, credit where credit is due, the whole thing belongs to Guido Flohr β here's the exact line, no edits from me:
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!
Like, all rights reserved, bestie, and if you want the full story, the source code is right there. (Yes the line repeats itself at the end β that's literally how it's written, I'm not touching it π)
π SEE ALSO π
Your little reading list, go off π
Locale::RecodeData(3)β the data-side friend π§Locale::Recode(3)β the actual recoding main character β¨perl(1)β mother, obviously π
That's the page, fr fr β courtesy of perl v5.42.0, dated 2025-01-22. Go forth and recode responsibly, ily, bye ππ¦
π¦ 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