Here's the problem, however...
It's fine if I'm just typing something out and I want it to display as underlined. That works fine.
The problem I have is that if, for example, I want a user to enter formatting information and I want to store it to a settings file and then recover it later, it won't work regardless if I use INI or TXT. I know TXT doesn't support control codes, but you can use $replace to change them to something else and then change them back when you load them back into the script later.
What happens is that the script says that the invisible ctrl-u character isn't ctrl-u anymore. It treats it as a space or something else. Therefore, if I am using the Japanese code pages, I cannot write a script that uses Ctrl-U in it if I want it to save the ctrl-u to a file and then load it back again. If the script was written by someone else, it works fine, even if I can't see the ctrl-u... it's something with how the code page affects how I enter a ctrl-u. mIRC accepts it fine on the command line or even on a simple /msg command in a script, but not when you're saving settings and reloading them. And, as I said, this doesn't work even if you're changing the ctrl-u to another character and saving that, then changing it back to ctrl-u afterwards. It just doesn't work.
The only way I can avoid that problem is to tell users to use another ctrl-code combination (I've had them use Ctrl-R) for underlining. I can then replace the ctrl-R with ctrl-U when loading settings and that works fine. Don't ask me why one method works and the other doesn't... it's something to do with the character being used... I think it treats it as a $null or something at times... not really sure. Anyhow, telling people to use another ctrl-code combination instead of ctrl-u for underlining is rather troublesome for them.
AFAIK, the only ctrl-code that this affects is ctrl-u. Therefore, I would really like to see an alternate character that can be used for ctrl-u that works like I mentioned above (where it's accepted for everyone, right alongside the current character). See above for how I mentioned it working.