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?

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

Réponses:

1038

Encode-le:

&amp;
Bob Fincheimer
la source
1
Si vous utilisez CDATA, sachez que certains caractères sont réservés. © -> & copier; Reportez-vous à cet article. w3schools.com/html/html_entities.asp
toidiu
1
\ u0026 Mieux vaut utiliser unicode comme suggéré par @Moss
Neo
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

Mousse
la source
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\"\"

Hai Rom
la source
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;
Khemraj
la source
9

Cela devrait être comme ceci:

<string name="game_settings_dragNDropMove_checkBox">Move by Drag&amp;Drop</string>
faruk
la source
7

Vous pouvez trouver tous les caractères spéciaux HTML dans cette page http://www.degraeve.com/reference/specialcharacters.php Remplacez simplement le code où vous voulez mettre ce caractère. :-)

AZ_
la source
getString () ne convertit pas & quot; Je devais utiliser \ u0022
grenat
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>

caulitomaz
la source
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é

ralphgabb
la source
2

Vous pouvez écrire de cette façon

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

Sortie: You & Me

Hoque MD Zahidul
la source
2

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

<string name="travels_tours_pvt_ltd"><![CDATA[Travels & Tours (Pvt) Ltd.]]></string>
AGTHAMAYS
la source
C'est la meilleure solution!
Fabi