Dylan Beattie
@dylanbeattie
Plain text?
Really?
abc
TECHNOLOGY
American Standard Code
for Information Interchange
https://www.computerhistory.org/timeline/computers/#169ebbe2ad45559efbc6eb3572012c35
0 00000000 NUL Null char
1 00000001 SOH Start of Heading
2 00000010 STX Start of Text
3 00000011 ETX End of Text
4 00000100 EOT End of Transmission
5 00000101 ENQ Enquiry
6 00000110 ACK Acknowledgment
7 00000111 BEL Bell
8 00001000 BS Back Space
9 00001001 HT Horizontal Tab
10 00001010 LF Line Feed
11 00001011 VT Vertical Tab
12 00001100 FF Form Feed
13 00001101 CR Carriage Return
14 00001110 SO Shift Out / X-On
15 00001111 SI Shift In / X-Off
16 00010000 DLE Data Line Escape
17 00010001 DC1 Device Control 1
18 00010010 DC2 Device Control 2
19 00010011 DC3 Device Control 3
20 00010100 DC4 Device Control 4
21 00010101 NAK Negative Ack
22 00010110 SYN Synchronous Idle
23 00010111 ETB End of Transmit Block
24 00011000 CAN Cancel
25 00011001 EM End of Medium
26 00011010 SUB Substitute
27 00011011 ESC Escape
28 00011100 FS File Separator
29 00011101 GS Group Separator
30 00011110 RS Record Separator
31 00011111 US Unit Separator
Shortcut: Ctrl-A
Shortcut: Ctrl-B
Shortcut: Ctrl-C
Plain text is really cool.
Plain text is really cool.
Plain text is really cool.
Teleprinters are awesome.
Plain text is really cool.
Teleprinters are awesome.
Teleprinters are awesome.
Plain text is really cool.
Teleprinters are awesome.
Teleprinters are awesome.
rn
n
…hey! Chill! Just use
Environment.NewLine!
32 00100000 Space
33 00100001 ! Exclamation mark
34 00100010 " Double quotes
35 00100011 # Number
36 00100100 $ Dollar
37 00100101 % Per cent sign
38 00100110 & Ampersand
39 00100111 ' Single quote
40 00101000 ( Open parenthesis
41 00101001 ) Close parenthesis
42 00101010 * Asterisk
43 00101011 + Plus
44 00101100 , Comma
45 00101101 - Hyphen
46 00101110 . Period or full stop
47 00101111 / Slash or divide
48 00110000 0 Zero
49 00110001 1 One
50 00110010 2 Two
51 00110011 3 Three
52 00110100 4 Four
53 00110101 5 Five
54 00110110 6 Six
55 00110111 7 Seven
56 00111000 8 Eight
57 00111001 9 Nine
58 00111010 : Colon
59 00111011 ; Semicolon
60 00111100 < Less than
61 00111101 = Equals
62 00111110 > Greater than
63 00111111 ? Question mark
48 0 0 1 1 0 0 0 0 0 Zero
49 0 0 1 1 0 0 0 1 1 One
50 0 0 1 1 0 0 1 0 2 Two
51 0 0 1 1 0 0 1 1 3 Three
52 0 0 1 1 0 1 0 0 4 Four
53 0 0 1 1 0 1 0 1 5 Five
54 0 0 1 1 0 1 1 0 6 Six
55 0 0 1 1 0 1 1 1 7 Seven
56 0 0 1 1 1 0 0 0 8 Eight
57 0 0 1 1 1 0 0 1 9 Nine
64 01000000 @ At symbol
65 01000001 A Uppercase A
66 01000010 B Uppercase B
67 01000011 C Uppercase C
68-87: Uppercase letters D-W
88 01011000 X Uppercase X
89 01011001 Y Uppercase Y
90 01011010 Z Uppercase Z
91 01011011 [ Opening bracket
92 01011100  Backslash
93 01011101 ] Closing bracket
94 01011110 ^ Caret - circumflex
95 01011111 _ Underscore
96 01100000 ` Grave accent
97 01100001 a Lowercase a
98 01100010 b Lowercase b
99 01100011 c Lowercase c
100-119: Lowercase letters d-w
120 01111000 x Lowercase x
121 01111001 y Lowercase y
122 01111010 z Lowercase z
123 01111011 { Opening brace
124 01111100 | Vertical bar
125 01111101 } Closing brace
126 01111110 ~ Tilde
127 1111111 DEL Delete
64 01000000 @ At symbol
65 01000001 A Uppercase A
66 01000010 B Uppercase B
67 01000011 C Uppercase C
68-87: Uppercase letters D-W
88 01011000 X Uppercase X
89 01011001 Y Uppercase Y
90 01011010 Z Uppercase Z
91 01011011 [ Opening bracket
92 01011100  Backslash
93 01011101 ] Closing bracket
94 01011110 ^ Caret - circumflex
95 01011111 _ Underscore
96 01100000 ` Grave accent
97 01100001 a Lowercase a
98 01100010 b Lowercase b
99 01100011 c Lowercase c
100-119: Lowercase letters d-w
120 01111000 x Lowercase x
121 01111001 y Lowercase y
122 01111010 z Lowercase z
123 01111011 { Opening brace
124 01111100 | Vertical bar
125 01111101 } Closing brace
126 01111110 ~ Tilde
127 1111111 DEL Delete
1111111
Hey? Hello?
Is anybody
using this
bit?
"To provide a single, consistent way to
represent each letter and symbol needed for
all human languages across all computers
and devices."
- Mission statement of the Unicode Consortium
xорошо
exoplanet
hårføner
harfoner
François
Bordes
(archæologist)
Mötley Crüe (rock band)
"François the
archæologist went to
the Mötley Crüe
concert."
"François the
archæologist went to
the Mötley Crüe
concert."
Magnus
Martensson
Magnus
Mårtensson
Ç  Ç
U+00C7
C + ◌̧  Ç
U+0043 U+0327
Z+◌̧+◌̪+◌̽+◌̿+◌̀+◌͆ =
д о б р и й
Добрий день!
д о б р и и ̆
◌
D:ProjectsPlainText>
String s1: Mötley Crüe (length: 11)
String s2: Mötley Crüe (length: 11)
s1 == s2: False
FormC: True
FormD: True
FormKC: True
FormKD: True
dotnet run
Unicode U+0308
◌̈
COMBINING DIARESIS
D:ProjectsPlainText>
String s1: Ⓟ
ⓛⓐⓘⓝ Ⓣ
ⓔⓧⓣ (length: 10)
String s2: Plain Text (length: 10)
s1 == s2: False
FormC: False
FormD: False
FormKC: True
FormKD: True
dotnet run
Dude… I think
we've been
hacked!
D e l e t e
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
44 00 65 00 6C 00 65 00 74 00 65 00
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
44 00 65 00 6C 00 65 00 74 00 65 00
䐀 攀 氀 攀 琀 攀
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
D e l e t e
00 44 00 65 00 6C 00 65 00 74 00 65
44 00 65 00 6C 00 65 00 74 00 65 00
D e l e t e
44 00 65 00 6C 00 65 00 74 00 65
44 00 65 00 6C 00 65 00 74 00 65 00
䐀 攀 氀 攀 琀 攀
<!DOCTYPE html>
<html>
<head>
<title>Привіт!</title>
</head>
<body>
<h1>Привіт!</h1>
</body>
</html>
003C 0021 0044 004F 0043 0054 0059
0050 0045 0020 0068 0074 006D 006C
003E 000A 003C 0068 0074 006D 006C
003E 000A 003C 0068 0065 0061 0064
003E 000A 0020 0020 003C 0074 0069
0074 006C 0065 003E 041F 0440 0438
0432 0456 0442 0021 003C 002F 0074
0069 0074 006C 0065 003E 000A 003C
002F 0068 0065 0061 0064 003E 000A
003C 0062 006F 0064 0079 003E 000A
0020 0020 003C 0068 0031 003E 041F
0440 0438 0432 0456 0442 0021 003C
002F 0068 0031 003E 000A 003C 002F
0062 006F 0064 0079 003E 000A 003C
002F 0068 0074 006D 006C 003E 000A
<!DOCTYPE html>
<html>
<head>
<title>Привіт!</title>
</head>
<body>
<h1>Привіт!</h1>
</body>
</html>
003C 0021 0044 004F 0043 0054 0059
0050 0045 0020 0068 0074 006D 006C
003E 000A 003C 0068 0074 006D 006C
003E 000A 003C 0068 0065 0061 0064
003E 000A 0020 0020 003C 0074 0069
0074 006C 0065 003E 041F 0440 0438
0432 0456 0442 0021 003C 002F 0074
0069 0074 006C 0065 003E 000A 003C
002F 0068 0065 0061 0064 003E 000A
003C 0062 006F 0064 0079 003E 000A
0020 0020 003C 0068 0031 003E 041F
0440 0438 0432 0456 0442 0021 003C
002F 0068 0031 003E 000A 003C 002F
0062 006F 0064 0079 003E 000A 003C
002F 0068 0074 006D 006C 003E 000A
<!DOCTYPE html>
<html>
<head>
<title>Привіт!</title>
</head>
<body>
<h1>Привіт!</h1>
</body>
</html>
003C 0021 0044 004F 0043 0054 0059
0050 0045 0020 0068 0074 006D 006C
003E 000A 003C 0068 0074 006D 006C
003E 000A 003C 0068 0065 0061 0064
003E 000A 0020 0020 003C 0074 0069
0074 006C 0065 003E 041F 0440 0438
0432 0456 0442 0021 003C 002F 0074
0069 0074 006C 0065 003E 000A 003C
002F 0068 0065 0061 0064 003E 000A
003C 0062 006F 0064 0079 003E 000A
0020 0020 003C 0068 0031 003E 041F
0440 0438 0432 0456 0442 0021 003C
002F 0068 0031 003E 000A 003C 002F
0062 006F 0064 0079 003E 000A 003C
002F 0068 0074 006D 006C 003E 000A
Total: 210 bytes
93 bytes are 00
44% redundancy.
0xxxxxxx 0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
A
B
C
D
E
F
G
H
I
K
J
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Б
Г
Д
Ё
Ж
З
Й
Л
П
У
Ф
Ц
Ч
Ш
Ы
Ь
Э
Ю
Я
A
B
C
D
E
F
G
H
I
K
J
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Б
Г
Д
Ё
Ж
З
Й
Л
П
У
Ф
Ц
Ч
Ш
Ы
Ь
Э
Ю
Я
A
B
C
E
H
I K
M
O P
T
X
Дякую!
Dylan Beattie
dylan@dylanbeattie.net
Twitter: @dylanbeattie

"There's No Such Thing as Plain Text", Dylan Beattie

  • 3.
  • 6.
  • 7.
  • 8.
    American Standard Code forInformation Interchange
  • 9.
  • 11.
    0 00000000 NULNull char 1 00000001 SOH Start of Heading 2 00000010 STX Start of Text 3 00000011 ETX End of Text 4 00000100 EOT End of Transmission 5 00000101 ENQ Enquiry 6 00000110 ACK Acknowledgment 7 00000111 BEL Bell 8 00001000 BS Back Space 9 00001001 HT Horizontal Tab 10 00001010 LF Line Feed 11 00001011 VT Vertical Tab 12 00001100 FF Form Feed 13 00001101 CR Carriage Return 14 00001110 SO Shift Out / X-On 15 00001111 SI Shift In / X-Off 16 00010000 DLE Data Line Escape 17 00010001 DC1 Device Control 1 18 00010010 DC2 Device Control 2 19 00010011 DC3 Device Control 3 20 00010100 DC4 Device Control 4 21 00010101 NAK Negative Ack 22 00010110 SYN Synchronous Idle 23 00010111 ETB End of Transmit Block 24 00011000 CAN Cancel 25 00011001 EM End of Medium 26 00011010 SUB Substitute 27 00011011 ESC Escape 28 00011100 FS File Separator 29 00011101 GS Group Separator 30 00011110 RS Record Separator 31 00011111 US Unit Separator Shortcut: Ctrl-A Shortcut: Ctrl-B Shortcut: Ctrl-C
  • 12.
    Plain text isreally cool.
  • 13.
    Plain text isreally cool.
  • 14.
    Plain text isreally cool. Teleprinters are awesome.
  • 15.
    Plain text isreally cool. Teleprinters are awesome. Teleprinters are awesome.
  • 16.
    Plain text isreally cool. Teleprinters are awesome. Teleprinters are awesome.
  • 17.
    rn n …hey! Chill! Justuse Environment.NewLine!
  • 18.
    32 00100000 Space 3300100001 ! Exclamation mark 34 00100010 " Double quotes 35 00100011 # Number 36 00100100 $ Dollar 37 00100101 % Per cent sign 38 00100110 & Ampersand 39 00100111 ' Single quote 40 00101000 ( Open parenthesis 41 00101001 ) Close parenthesis 42 00101010 * Asterisk 43 00101011 + Plus 44 00101100 , Comma 45 00101101 - Hyphen 46 00101110 . Period or full stop 47 00101111 / Slash or divide 48 00110000 0 Zero 49 00110001 1 One 50 00110010 2 Two 51 00110011 3 Three 52 00110100 4 Four 53 00110101 5 Five 54 00110110 6 Six 55 00110111 7 Seven 56 00111000 8 Eight 57 00111001 9 Nine 58 00111010 : Colon 59 00111011 ; Semicolon 60 00111100 < Less than 61 00111101 = Equals 62 00111110 > Greater than 63 00111111 ? Question mark
  • 19.
    48 0 01 1 0 0 0 0 0 Zero 49 0 0 1 1 0 0 0 1 1 One 50 0 0 1 1 0 0 1 0 2 Two 51 0 0 1 1 0 0 1 1 3 Three 52 0 0 1 1 0 1 0 0 4 Four 53 0 0 1 1 0 1 0 1 5 Five 54 0 0 1 1 0 1 1 0 6 Six 55 0 0 1 1 0 1 1 1 7 Seven 56 0 0 1 1 1 0 0 0 8 Eight 57 0 0 1 1 1 0 0 1 9 Nine
  • 20.
    64 01000000 @At symbol 65 01000001 A Uppercase A 66 01000010 B Uppercase B 67 01000011 C Uppercase C 68-87: Uppercase letters D-W 88 01011000 X Uppercase X 89 01011001 Y Uppercase Y 90 01011010 Z Uppercase Z 91 01011011 [ Opening bracket 92 01011100 Backslash 93 01011101 ] Closing bracket 94 01011110 ^ Caret - circumflex 95 01011111 _ Underscore 96 01100000 ` Grave accent 97 01100001 a Lowercase a 98 01100010 b Lowercase b 99 01100011 c Lowercase c 100-119: Lowercase letters d-w 120 01111000 x Lowercase x 121 01111001 y Lowercase y 122 01111010 z Lowercase z 123 01111011 { Opening brace 124 01111100 | Vertical bar 125 01111101 } Closing brace 126 01111110 ~ Tilde 127 1111111 DEL Delete
  • 21.
    64 01000000 @At symbol 65 01000001 A Uppercase A 66 01000010 B Uppercase B 67 01000011 C Uppercase C 68-87: Uppercase letters D-W 88 01011000 X Uppercase X 89 01011001 Y Uppercase Y 90 01011010 Z Uppercase Z 91 01011011 [ Opening bracket 92 01011100 Backslash 93 01011101 ] Closing bracket 94 01011110 ^ Caret - circumflex 95 01011111 _ Underscore 96 01100000 ` Grave accent 97 01100001 a Lowercase a 98 01100010 b Lowercase b 99 01100011 c Lowercase c 100-119: Lowercase letters d-w 120 01111000 x Lowercase x 121 01111001 y Lowercase y 122 01111010 z Lowercase z 123 01111011 { Opening brace 124 01111100 | Vertical bar 125 01111101 } Closing brace 126 01111110 ~ Tilde 127 1111111 DEL Delete 1111111
  • 24.
  • 30.
    "To provide asingle, consistent way to represent each letter and symbol needed for all human languages across all computers and devices." - Mission statement of the Unicode Consortium
  • 31.
  • 34.
  • 35.
  • 36.
    "François the archæologist wentto the Mötley Crüe concert."
  • 37.
    "François the archæologist wentto the Mötley Crüe concert."
  • 39.
  • 40.
  • 43.
    Ç  Ç U+00C7 C+ ◌̧  Ç U+0043 U+0327
  • 44.
  • 46.
    д о бр и й Добрий день! д о б р и и ̆ ◌
  • 48.
    D:ProjectsPlainText> String s1: MötleyCrüe (length: 11) String s2: Mötley Crüe (length: 11) s1 == s2: False FormC: True FormD: True FormKC: True FormKD: True dotnet run Unicode U+0308 ◌̈ COMBINING DIARESIS
  • 49.
    D:ProjectsPlainText> String s1: Ⓟ ⓛⓐⓘⓝⓉ ⓔⓧⓣ (length: 10) String s2: Plain Text (length: 10) s1 == s2: False FormC: False FormD: False FormKC: True FormKD: True dotnet run
  • 50.
  • 53.
    D e le t e
  • 54.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65
  • 55.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65
  • 56.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65 44 00 65 00 6C 00 65 00 74 00 65 00
  • 57.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65 44 00 65 00 6C 00 65 00 74 00 65 00 䐀 攀 氀 攀 琀 攀
  • 58.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65
  • 59.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65
  • 60.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65
  • 61.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65
  • 62.
    D e le t e 00 44 00 65 00 6C 00 65 00 74 00 65 44 00 65 00 6C 00 65 00 74 00 65 00
  • 63.
    D e le t e 44 00 65 00 6C 00 65 00 74 00 65 44 00 65 00 6C 00 65 00 74 00 65 00 䐀 攀 氀 攀 琀 攀
  • 64.
    <!DOCTYPE html> <html> <head> <title>Привіт!</title> </head> <body> <h1>Привіт!</h1> </body> </html> 003C 00210044 004F 0043 0054 0059 0050 0045 0020 0068 0074 006D 006C 003E 000A 003C 0068 0074 006D 006C 003E 000A 003C 0068 0065 0061 0064 003E 000A 0020 0020 003C 0074 0069 0074 006C 0065 003E 041F 0440 0438 0432 0456 0442 0021 003C 002F 0074 0069 0074 006C 0065 003E 000A 003C 002F 0068 0065 0061 0064 003E 000A 003C 0062 006F 0064 0079 003E 000A 0020 0020 003C 0068 0031 003E 041F 0440 0438 0432 0456 0442 0021 003C 002F 0068 0031 003E 000A 003C 002F 0062 006F 0064 0079 003E 000A 003C 002F 0068 0074 006D 006C 003E 000A
  • 65.
    <!DOCTYPE html> <html> <head> <title>Привіт!</title> </head> <body> <h1>Привіт!</h1> </body> </html> 003C 00210044 004F 0043 0054 0059 0050 0045 0020 0068 0074 006D 006C 003E 000A 003C 0068 0074 006D 006C 003E 000A 003C 0068 0065 0061 0064 003E 000A 0020 0020 003C 0074 0069 0074 006C 0065 003E 041F 0440 0438 0432 0456 0442 0021 003C 002F 0074 0069 0074 006C 0065 003E 000A 003C 002F 0068 0065 0061 0064 003E 000A 003C 0062 006F 0064 0079 003E 000A 0020 0020 003C 0068 0031 003E 041F 0440 0438 0432 0456 0442 0021 003C 002F 0068 0031 003E 000A 003C 002F 0062 006F 0064 0079 003E 000A 003C 002F 0068 0074 006D 006C 003E 000A
  • 66.
    <!DOCTYPE html> <html> <head> <title>Привіт!</title> </head> <body> <h1>Привіт!</h1> </body> </html> 003C 00210044 004F 0043 0054 0059 0050 0045 0020 0068 0074 006D 006C 003E 000A 003C 0068 0074 006D 006C 003E 000A 003C 0068 0065 0061 0064 003E 000A 0020 0020 003C 0074 0069 0074 006C 0065 003E 041F 0440 0438 0432 0456 0442 0021 003C 002F 0074 0069 0074 006C 0065 003E 000A 003C 002F 0068 0065 0061 0064 003E 000A 003C 0062 006F 0064 0079 003E 000A 0020 0020 003C 0068 0031 003E 041F 0440 0438 0432 0456 0442 0021 003C 002F 0068 0031 003E 000A 003C 002F 0062 006F 0064 0079 003E 000A 003C 002F 0068 0074 006D 006C 003E 000A Total: 210 bytes 93 bytes are 00 44% redundancy.
  • 67.
    0xxxxxxx 0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
  • 71.
  • 72.
  • 73.
  • 74.