llUnescapeURL() appears to have strange behaviour issues with character encoding, and unfortunately I'm having trouble finding a solid repro (as I can't fix the damned thing).
Create a project with UTF-8 as the default file encoding (not that it should matter really), and try the following script:
default {
state_entry() {
llOwnerSay(llUnescapeURL("%ee%80%b0"));
}
}
It should optimise down into:
default {
state_entry() {
llOwnerSay("");
}
}
But it can often end up like:
default {
state_entry() {
llOwnerSay("î°");
}
}
No doubt these probably screw up, but the point is that the output appears to be three single characters instead of one multi-byte character like it should be. Sometimes this will work, other times it inexplicably won't work, it's like LSL+ is using a different internal encoding or something, but I can't understand why or what causes it to do this, as some files work fine while others don't and with no differences that I can see.