Text encoding
The server uses UTF-8 for all client text. Telnet connections default to UTF-8
and negotiate UTF-8 with the CHARSET option when the client supports it.
Malformed UTF-8 commands are rejected instead of being partially interpreted.
Messages, descriptions, attribute values, room and thing names, exit names and aliases, macro expansions, channel history, help files, and Lua-generated text may contain UTF-8. SQLite text loaded by the server must contain valid UTF-8. Legacy ANSI styling remains supported because its escape sequences are ASCII bytes within the UTF-8 stream.
The following lookup-sensitive values remain printable ASCII:
- player names and player aliases;
- channel names and per-player channel command aliases; and
- macro aliases.
Channel names and channel aliases cannot contain spaces. ASCII identifiers use their existing case-insensitive matching. UTF-8 exit aliases use case-insensitive matching for ASCII letters and exact-byte matching for other characters; the server does not perform Unicode normalization or case folding.
Lua code can apply the same byte-level printable-ASCII test with
mux.is_printable_ascii(value).