Специальные символы заменяются квадратом в приложении для 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();

перегрузка для рендеринга текста. Таким образом, вы можете подтвердить, что текст является тем, что вы ожидаете, и сузите вашу проблему.

Ответ 3

Вместо использования Toast Message вы можете использовать настраиваемый диалог, в котором вы можете иметь в TextView, чтобы показать эту строку. Теперь используйте

    TextView textView=new TextView(this);
    textView.setText(Html.fromHtml("your string"));

Надеюсь, что эта работа для вас, но не пробовала