I was having problem getting a script displaying a colon as part of a label returned by $submenu, so I searched to see if anyone else had the same issue, and discovered it was only me having the problem a decade ago on an unrelated script.
Since there was no solution given last time, I'm bumping this with my current solution. My current script was displaying a menu listing invalid commands reported by the server, which could include strings containing colons, but could also be $style(1) and $style(2) which were getting interpreted even if they were inside $unsafe().
To deal with the colon issue, I displayed them as $chr(42889), which looks like the colon. I think my prior solution pre-unicode was displaying the colons as semi-colons.
I also began the label with $chr(160), which allowed $style() to be displayed instead of interpreted.