Character substitution is a JMC feature that allows certain characters coming from a MUD to be replaced (substituted) with alternative characters.
Why is it needed? There are two reasons to use character substitution. The first reason is to change some characters you dont like to see. Say, for example, you favourite MUD uses the # character as a statusline prefix. If you want the statusline to start with the @ character you have to substitute the # character with the @ character. The statusline would now start with a @.
The second reason is to avoid problems with the symbol 255. Some national languages use character 255 as a letter. This symbol is a special command in the telnet protocol. What why national MUDs uses other character instead of 255. For instance - z character. If you dont like to see the z symbols instead of the natural letter you have to substitute the z to the 255 symbol.
See also: Substitution Options