It's definitely an encoding issue. I just wrote a little
test program; if the properties file is encoded using ANSI I get the expected output, but if I save it using UTF-8 I get the mess you got. I also get the same results if I use java.util.Properties with a FileReader with the system encoding. Only if I switch that do I get the actual content.
So that's what we need to do for ResourceBundle as well. ResourceBundle itself doesn't have any methods / constructors to help us with, so we have to go to ResourceBundle.Control. I've checked the source (available in src.zip inside the JDK folder), and it uses a PropertyResourceBundle combined with an InputStream. And guess what - this uses Properties.load with an InputStream, thereby getting the same problem as I got with a direct Properties object.
The solution is obvious - create a new ResourceBundle.Control subclass, and override newBundle to use a Reader instead of an InputStream. The following is my quick (but tested and working) attempt:
I'm actually disappointed that Sun/Oracle haven't provided such a class themselves.