11 votes

Les caractères spéciaux sont remplacés par un carré dans l'application Android

Dans mon application Android, je fais un simple toast.

Toast.makeText(
        parent.getApplicationContext(),
        parent.getResources().getIdentifier(result, "string",
        parent.getPackageName()), Toast.LENGTH_LONG).show();

Ce site

parent.getResources().getIdentifier(result, "string", parent.getPackageName())

récupère une chaîne dont le nom correspond au résultat de strings.xml . J'ai un fichier strings.xml pour les langues anglaise et allemande. Le problème est que les caractères spéciaux en langue allemande comme Ü Ö Ä ne sont pas affichés correctement. Ils sont remplacés par un symbole carré.

Les strings.xml sont encodés en utf-8.

Où est le problème et comment puis-je le résoudre ?

2voto

ArtWorkAD,

Il semble que votre problème est causé par le fait que le Toast.makeText() n'utilise pas le bon jeu de caractères lors de l'extraction des caractères spéciaux des ressources.

Je vous suggère, comme étape de débogage, de tirer la chaîne vers le bas à partir des ressources indépendamment et d'utiliser la fonction

Toast.makeText(Context context, CharSequence text, int duration).show();

pour rendre votre texte. De cette façon, vous pouvez confirmer que le texte correspond à ce que vous attendez et circonscrire votre problème.

0voto

Shishir Shetty Points 1163

Veuillez lire attentivement la documentation Android : http://developer.Android.com/resources/tutorials/localization/index.html

0voto

Sameer Points 6735

Au lieu d'utiliser Toast Message, vous pouvez utiliser un dialogue personnalisé dans lequel vous pouvez avoir un TextView pour afficher cette chaîne.

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

J'espère que cela fonctionnera pour vous mais je n'ai pas essayé

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X