I got into the source code as I tried to figure out why it failed with foobar as well and gave me questionmarks ("[ foobar2000: ???? - ????·?????????? | 0:27/5:27 | 320 kbps ]").
So, I found out the problem was with
if ($utfenabled(%GTS_target)) {
var %tmsg $utfencode(%tmsg)
}
else {
[...]
on line 1229. With $uftenabled() to be exactly, which constantly returned $false. So, setting this to "if ($true)" would do the deal, but that's not what I wanted. So I went into that alias.
And found out, that it goes well until this point (l. 3033):
if ($gettok($readini($mircini,fonts,fchannel),4,44) == 2) {
echo %eccol 5
return $true
}
else return $false
which resulted in a $false. Searching the mirc.ini then showed this:
[fonts]
[cnicks]
What's important is that there is no entry at all in this section but I can see and also write unicode into every channel.
Then, how do I fix this?gtsdll expects something like this:
[fonts]
fchannel=Fixedsys,412,0,2,0
(See that "fchannel" and the 2 in the fourth token)
To create this just paste it into the ini (lol) or click that icon on the left of the menubar in mIRC, go to "Font...", do whatever you want (I did nothing) and select "Set as default for channel windows". That's it.
But the question now is: Why is this required? I can't see an option that changes this value 2 nor do I know what this represents. I tried setting random fonts but this always resulted in a 2.
It would make sense to check if this value unequals 1 or 0 if that does not allow unicode. But furthermore you'd have to check for override options with the specific channel, like "f#gtsdll=Fixedsys,412,0,1,0" which has no 2 here (though I edited this line manually).
Edit: I saw this image:
http://imgur.com/CSLOO.png which makes pretty much clear how it was handled before... So this kind of depends on backwards compatibility and is not needed for mIRC 7.22 (probably older).