The question is best explained with the following simple code:
AlertDialog ad = new AlertDialog.Builder(this).create();
ad.setCancelable(false); // This blocks the 'BACK' button
ad.setMessage("Italiano è" + " " + getString(R.string.debug));
ad.show();
where R.stringdebug is exactly the same as "Italiano è". The following is a screenshot of the display:
You can see that the character "è" is displayed correctly only if it is in a string resource.
How can it be displayed correctly in a hard-coded string?
Edit:
The result of of using ISO-8859-1 instead of UTF-8 for the java source code file: