Valid chat message characters

does not permit all possible characters (or 'bytes', to be precise) without potentially throwing an error or disconnecting the player.
ID 	Printout†ChatFrame:AddMessage(strchar(ID))	Permitted	Remarks
0 	none (terminates string) 	❌ 	Silently ignored (ie, no message sent)
1 - 9 	 	✔️ 	
10 	new line (line feed) 	❌ 	DISCONNECT
11 - 12 	 	✔️ 	
13 	new line (carriage return) 	✔️ 	
14 - 31 	 	✔️ 	
32 - 123 	standard ASCII 	✔️ 	The client applies chat substitutions to %t, %f and other codes
124 	 	❌ 	ERROR "invalid escape code in chat message", also observed causing disconnects as of 3.1.3
125 - 126	standard ASCII 	✔️ 	
127 	 	✔️ 	
128 - 255	 	❌ 	ERROR "chat message must be UTF-8 text" possible
== See also ==
:* constructs a single character from its decimal representation
:* returns the decimal byte representation of a single character