Yes, the equivalent on *nix is libiconv.

If you know that your default locale is using UTF8, then you can use mbstowcs by calling setlocale(LC_ALL, "").

LATIN CAPITAL LETTER A WITH TILDE (Ã) is represented as 0xC3 in many single-byte codepages: http://www.tachyonsoft.com/uc0000.htm#U00C3

I suspect that when you see "$ EuroÃ$", you are seeing code that is attempting to interpret the string in some single-byte codepage.
ñ = 0xC3,0xB2 in UTF8. The 0xC3 can be interpreted as Ã, and perhaps the 0xB2 doesn't render.

gg