Yep, VB is stupid in this regard, it's storing the strings as Unicode, but it's automatically converting it to the current system ANSI charset and then it's converting this converted charset to the set control charset. It's a huge pain to workaround this, basically you have to get the current system charset and convert your string to a specifically mangled format so that it gets back the correct format after the automatic charset conversion.
We struggled a great deal with Japanese, more than with many other languages. Our GUI is written in VB, there are core VB display issues with certain languages, and Japanese is one of them. We may not be able to fix this. Re-encoding the language files in Unicode ensures the data itself is portable, i.e. that there is no ambiguity that the language file is intended to be Japanese, and no ambiguity about what *should be* displayed. The next step after that is to work out the issues with displaying the data itself, but unfortunately that is a separate problem.
The reason buttons appear correctly is that it does this stupidity only for text boxes and labels.