Comment écrire des caractères et dans Android strings.xml


430

J'ai écrit ce qui suit dans le strings.xmlfichier:

<string name="game_settings_dragNDropMove_checkBox">Move by Drag&Drop</string>

J'ai eu l'erreur suivante:

The reference to entity "Drop" must end with the ';' delimiter.

Comment puis-je écrire des caractères & dans le fichier strings.xml?


6
Dans le studio Android, vous pouvez simplement appuyer sur Alt+Enteret il se convertira pour vous.
Rumit Patel

Réponses:



159

Pour les caractères spéciaux, j'utilise normalement la définition Unicode, pour le '&' par exemple: \ u0026 si j'ai raison. Voici une belle page de référence: http://jrgraphix.net/research/unicode_blocks.php?block=0


Celui-ci semble fonctionner le mieux. Le $ amp; sort de getString () sans être converti. C'est donc une douleur.
Adam

1
Cela n'a pas fonctionné pour moi pour certains symboles, comme \ u227A.
Luis A. Florit

pour Ⓡ utiliser le symbole & # 174; et le symbole de marque ™ & # 8482;
Deepak

55

Ceci est un de mes problèmes, ma solution est la suivante: utiliser &gt;pour <, &lt;pour >, &amp;pour &, "'"pour ', &quotpour\"\"


1
Impossible de modifier cela car la modification est minuscule, laissant un commentaire à la place. Il devrait lire Use &gt; for >, &lt;for <
Jose_GD

13

Même votre question a une réponse, je veux quand même dire à plus d'entités la même chose. Ce sont html entitiesdonc dans Android, vous les écrirez comme:

Remplacez ci-dessous par:

& with &amp;
> with &gt;
< with &lt;
" with &quot;, &ldquo; or &rdquo;
' with &apos;, &lsquo; or &rsquo;
} with &#125;

9

Cela devrait être comme ceci:

<string name="game_settings_dragNDropMove_checkBox">Move by Drag&amp;Drop</string>


4

Il est également possible de mettre le contenu de votre chaîne dans un CDATA XML, comme Android Studio le fait pour vous lorsque vous Extract string resource

<string name="game_settings_dragNDropMove_checkBox"><![CDATA[Move by Drag&Drop]]></string>


3

Cela peut être très ancien. Mais pour ceux qui recherchent un code rapide.

 public String handleEscapeCharacter( String str ) {
    String[] escapeCharacters = { "&gt;", "&lt;", "&amp;", "&quot;", "&apos;" };
    String[] onReadableCharacter = {">", "<", "&", "\"\"", "'"};
    for (int i = 0; i < escapeCharacters.length; i++) {
        str = str.replace(escapeCharacters[i], onReadableCharacter[i]);
    } return str;
 }

Qui gère les caractères d'échappement, vous pouvez ajouter des caractères et des symboles sur leurs tableaux respectifs.

-À votre santé


2

Vous pouvez écrire de cette façon

<string name="you_me">You &#38; Me<string>

Sortie: You & Me


2

Pour éviter l'erreur, utilisez la chaîne d'extraction:

<string name="travels_tours_pvt_ltd"><![CDATA[Travels & Tours (Pvt) Ltd.]]></string>

C'est la meilleure solution!
Fabi

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.