We ran some java code using cron in Linux to persist thousands of records in production database. The locale charmap in that box was \"ANSI_X3.4-1968\". Now, we took followi
Basically no. You made the biggest mistake in new String(insertSpecial.getBytes(), "UTF-8");
which again shows that character encoding is surprisingly difficult to handle.
What that piece of code does, step by step:
insertSpecial
in the platform encodingI've seen this code several times, and unfortunately it only breaks things. It's completely unnecessary and it doesn't "convert" anything even if it were written correctly. If the platform encoding is not UTF-8
then it will most likely destroy any special characters (or even the whole String if there's a suitable difference between platform encoding and the one given in the String constructor).
The question mark is a placeholder for a character that could not be converted, meaning it's forever gone.
Here's some reading so you won't make that mistake again: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)