Специальные символы заменяются квадратом в приложении для Android
В моем приложении для Android я делаю простой тост
Toast.makeText(
parent.getApplicationContext(),
parent.getResources().getIdentifier(result, "string",
parent.getPackageName()), Toast.LENGTH_LONG).show();
Это
parent.getResources().getIdentifier(result, "string", parent.getPackageName())
извлекает строку, имя которой соответствует результату strings.xml
. У меня есть файл strings.xml для английского и немецкого языков. Проблема в том, что специальные символы на немецком языке, такие как Ü Ö, отображаются неправильно. Они заменяются квадратным символом.
В файле strings.xml кодируются utf-8.
Где проблема и как ее исправить?
Ответы
Ответ 1
ArtWorkAD,
Кажется, что ваша проблема вызвана тем, что метод Toast.makeText()
не использует правильный Charset при вытягивании ваших специальных символов из ресурсов.
Я предлагаю в качестве этапа отладки вы вытягивать строку из ресурсов независимо и использовать
Toast.makeText(Context context, CharSequence text, int duration).show();
перегрузка для рендеринга текста. Таким образом, вы можете подтвердить, что текст является тем, что вы ожидаете, и сузите вашу проблему.
Ответ 2
Пожалуйста, внимательно прочитайте документацию по Android.
http://developer.android.com/resources/tutorials/localization/index.html
Ответ 3
Вместо использования Toast Message вы можете использовать настраиваемый диалог, в котором вы можете иметь в TextView, чтобы показать эту строку. Теперь используйте
TextView textView=new TextView(this);
textView.setText(Html.fromHtml("your string"));
Надеюсь, что эта работа для вас, но не пробовала