I'm running Ubuntu 9.10 (can't upgrade due to some applications being incompatible with later versions), with all updates installed.
A colleague has written a VB.Net application which seems to run correctly under Mono, however there is an issue with characters in text boxes: if they are not strictly ASCII, they show as boxes (the typical Windows replacement character).
At first I thought it was an issue with Greek characters (which we use); however, I attempted to insert some accented western characters (like é, which is in the typical western 1252 Windows codepage), and these too showed up as boxes too, so it's not strictly an issue with Greek.
I attempted to type Greek in a textbox: the word «Δοκιμή» (test). I then selected what I typed, pressed Ctrl-C, switched to a native text editor and pressed Ctrl-V. The result was “Îοκιμή”, which is the greek word pretty messed up (think UTF-8 interpreted as Latin-1; I work a lot with Unicode, so it's easy to recognise such stuff :) However, if you want to verify, start a Python interpreter in a UTF-8 capable terminal and try:
>>> a="Îοκιμή"
>>> print a.decode("utf8").encode("latin1").decode("utf8")
Δοκιμή
which is what I typed).
Now, the application also embeds an Internet Explorer control; Mono does well emulating it (I think it uses a Gecko engine), and in a textbox inside that IE control, I can type fine and see any non-ASCII character I want.
I would like to know whether there is an issue with my mono configuration or even if it's a known bug; VB.Net is supposedly Unicode-capable, but I don't know anything about the Unicode-capability of the standard controls it uses.
So, if you can help me, please advise: what can I do on the Ubuntu side to remedy the situation?
I assume the VB.NET application is using Microsoft's .NET GUI stuff and not the Gtk or Qt bindings for .NET? Just guessing, but maybe the problem is related to the fact that Windows (and maybe .NET too?) uses UCS-2 (or UTF-16?) and (most) Xorg applications use/expect UTF-8?
Anyway, looks like there is a bug somewhere, and like you say, something gets converted one time too many...