Comment puis-je mettre des caractères utf-16 dans une ressource de chaîne Android?

Je souhaite utiliser Emojis dans les chaînes de ma application. Toutes les cordes résident, bien sûr, dans strings.xml

Le problème est que tous les Emojis ne sont pas compatibles avec 16 bits. Certains Emojis peuvent être représentés comme "normal" hexagone 16 bits: '\ u26FF', mais certains sont des hexs 32 bits (UTF-16), généralement représentés par: '\ x1F600' . Je n'ai aucun problème à traiter avec ceux dans l'application, dans le code. Mais le fichier de ressource strings.xml est codé par UTF8 et ne traite pas correctement avec des caractères d'échappement non 16 bits.

  • Connexion Socket SSL
  • Création d'une vue circulaire dans Android
  • Adaptateur de synchronisation sans compte
  • Est-ce que Android utilise OkHttp en interne?
  • Comment faire pour copier les fichiers sélectionnés depuis Android avec Adb Pull
  • Comment puis-je éviter de clignoter la mise à jour de la notification tout en changeant le bouton
  • J'ai essayé d'utiliser '\ x1F600' – parce que j'ai vu que '\ u26FF' fonctionne très bien. Mais il ne semble pas dévorer le char de l'échappement 'x'. Il n'a pas non plus aimé la notation regexp '\ x {1F600}'

    J'ai donc fini par utiliser un espace réservé de chaîne '% 1 $ s' et remplir le Emoji dans un code comme celui-ci:

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

    Ce n'est pas une solution très élégante … Existe-t-il un bon moyen de mettre des caractères UTF-8 32 bits dans strings.xml?

  • Existe-t-il un moyen de transmettre un message d'un navigateur Android vers une application?
  • Est-il possible d'envoyer une requête synchrone dans Firebase?
  • Android gotchas et les leçons apprises
  • Remplacer la disposition sur le changement d'orientation
  • Pour diviser un cercle en différentes régions pour un tableau de fléchettes?
  • Comment puis-je visualiser une vidéo à l'intérieur d'une vidéo dans une position spécifique?
  • 2 Solutions collect form web for “Comment puis-je mettre des caractères utf-16 dans une ressource de chaîne Android?”

    Mais le fichier de ressource strings.xml est UTF8

    Si c'est UTF-8 encodé, vous pouvez mettre vos emojis directement. Mais vous risquez que votre éditeur ou un autre logiciel les détruit.

    Si vous les mettez en XML, vous pouvez essayer d'utiliser des entités XML: 😀 , Je ne suis pas sûr de la façon dont Android les prend en charge.

    Vous pouvez également utiliser des paires de substitution: convertissez l'emoji en UTF-16 et utilisez la norme pour échapper. Vous pouvez, par exemple, consulter cette page, il vous indique même comment créer une chaîne litarale en Java: http://www.fileformat.info/info/unicode/char/1F600/index.htm

    😜 → U + 1F600 → "\uD83D\uDE00"

    Je suppose que vous développez quelque chose comme Emoji Keyboard. #EmojiCodeSheet peut vous aider à ce sujet

    #EmojiCodeSheet

    Lien de projet: https://github.com/shanraisshan/EmojiCodeSheet


    Tout emoji peut être représenté sous une forme différente

    1. Codepoint
    2. Chaîne

    Par exemple: SMILING_FACE_WITH_SUN_GLASS Emoji

    1. Codepoint : 0x1f60e
    2. String: 😎 (qui est \ uD83D \ uDE0E en fait)

    Vous pouvez facilement afficher des emojis dans Android soit en les enregistrant dans xml ou java, la liste est présente ci-dessous

    1. XML comme strings.xml
    2. Comme constante statique dans les fichiers JAVA

    Il suffit de remplacer ces codes emoji par les images emoji dans votre application Android, en faisant quelques lignes de code.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.