The reason those characters turn into question marks is because they're not representable in the character set you're using. The best way to fix this is to specify UTF-8 encoding everywhere you get a chance. At the HTTP level, you do this in the Content-Type header. For example:
Content-Type: text/html; charset=UTF-8
You can also specify UTF-8 encoding on your <form> tags.
At the Java level, specify the encoding by calling request.setCharacterEncoding("UTF-8") before you read any paramters. And at the MySQL level, specify that your database table uses UTF-8 encoding. You pass this at the end of CREATE TABLE statements, or you can use ALTER TABLE to modify the encoding of an existing table.
Once you're using UTF-8 at all levels of your application, characters will never become corrupted or turn into question marks. If you run into problems, use a debugger and see where the corruption is happening. Then make sure both sides are using UTF-8 and you'll fix the problem.