Voglio usare Emojis nelle stringhe della mia app. Tutte le stringhe risiedono, ovviamente, in stringhe.xmlCome posso inserire i caratteri utf-16 nella risorsa stringa Android?
Il problema è che non tutti gli Emoji sono compatibili con 16 bit. Alcuni Emoji possono essere rappresentati come esadecimale "normale" a 16 bit: '\ u26FF' ma alcuni sono esagoni a 32 bit (UTF-16), generalmente rappresentati come: '\ x1F600'. Non ho alcun problema a gestire quelli all'interno dell'app, nel codice. Ma il file di risorse strings.xml è codificato in UTF8 e non tratta correttamente con caratteri di escape non a 16 bit.
Ho provato ad utilizzare '\ x1F600' - perché ho visto che '\ u26FF' funziona bene. Ma sembra non divorare il carattere di fuga "x". Né ha come la notazione regexp '\ x {1F600}'
Così ho finito per usare un segnaposto stringa di '% 1 $ s' e compilando l'Emoji in codice come questo:
// greeting_3 is defined as: "hello there %1$s!"
String s = context.getString(R.string.greeting_3, "");
// OR:
String s = context.getString(R.string.greeting_3, new String(Character.toChars(0x1F61C)));
Questa non è una soluzione molto elegante ... esiste un modo corretto per inserire i caratteri UTF-8 a 32 bit in string.xml?
Ho provato la via diretta, ma ha causato es la mia applicazione al segfault. Questo è il motivo per cui ho iniziato a cercare alternative :-) Proverò le altre opzioni. – Shoham
Ho provato il testo non elaborato e & # x1f600; con segfault in fase di esecuzione e & # xd83d; & # xde00; con errore di compilazione ("Errore in un file XML: build di interruzione. "). Penso che puoi tranquillamente presentare un bug, è valido. –
Conoscere bug: https://code.google.com/p/android/issues/detail?id=64892 –