Wie kann ich utf-16-Zeichen in der Android-string-Ressource?

Will ich mit Emojis in meiner app über die Saiten. Alle Saiten befinden sich, natürlich, in strings.xml

Das problem ist, dass nicht alle Emojis sind 16-bit-freundlich. Einige Emojis dargestellt werden kann, wie "normale" 16-bit-hex: '\u26FF' aber einige sind 32-bit-Felder (UTF-16), in der Regel dargestellt als: '\x1F600'. Ich habe kein problem, den Umgang mit diesen in der app im code. Aber die strings.xml Ressource-Datei ist UTF8 kodiert, und befasst sich nicht richtig mit nicht-16-bit-escape-chars.

Versuchte ich mit '\x1F600' - weil ich sah, dass '\u26FF' funktioniert Prima. Aber es scheint nicht zu verschlingen, die 'x' escape-char. Noch hat Sie wie die regexp-notation '\x{1F600}'

So landete ich mit einem string-Platzhalter '%1$s' und füllen Sie die Emoji in code wie diesem:

//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)));

Dies ist keine sehr elegante Lösung... gibt es eine richtige Weg, um 32-bit-UTF-8-Zeichen in strings.xml ?

InformationsquelleAutor Shoham | 2014-07-20

Schreibe einen Kommentar