come codificare e decodificare emoji in android?

Ho usato la libreria https://github.com/rockerhieu/emojicon nella mia applicazione. Quando passa una string statica di unicode nel mio codice, le emoji sono visibili ma se invio l'emoji al server php usando il regolare servizio web e riceviamo la string quindi mostrerò solo la string unicode nella mia applicazione. sia le stringhe statiche che il server recuperate sono le stesse se mi confronto.

Qualcuno può dirmi che cosa ho commesso il mio errore nella mia domanda. la stessa applicazione viene sviluppata in IOS e ciò che hanno fatto è che essi codificano la string in ASCII> UTF-8 durante l'invio al server. poi decodificano la string nello stesso modo in cui inviano. Può qualcuno mi suggerisce SE questo sarebbe compatibile con android anche, Se sì, allora come posso fare questo.

  • Trovare tutti gli stili disponibili definiti da themes della piattaforma android
  • Timeout per la richiesta di server effettuata utilizzando "Volley" solo su Android e non iOS
  • Cosa posso usare per consentire a un'applicazione android di comunicare con un'applicazione di rotaie
  • Tastiera Android con emoji
  • È ansible fare richieste di http reale con robolectric
  • Cordova PushPlugin: Android non riproduce il suono push mentre l'applicazione non è in esecuzione
  • 5 Solutions collect form web for “come codificare e decodificare emoji in android?”

    Possiamo usare la libreria commons-lang (commons-lang-2.5.jar) per la codifica e la decodifica dei caratteri unicode. Scarica il file jar qui o utilizza gradle: compile 'org.apache.commons:commons-lang3:3.4' .

    Per l'utilizzo di codificaStringEscapeUtils.escapeJava(String text) Questo può essere utilizzato in android EditText quando viene chiamato il metodo getText , in cui codificherà correttamente i caratteri unicode prima di submit al server web.

    Utilizzo di DecodificaStringEscapeUtils.unescapeJava(String text) Questo può essere utilizzato in android TextView per setText , where decodifica correttamente i caratteri unicode dopo aver ricevuto la risposta dal server web.

    Ex:

     EditText etEmojiEditText = new EditText(this); etEmojiEditText.setText("TYPE SOMETHING IN EMOJI"); String toServer = etEmojiEditText.getText(); String toServerUnicodeEncoded = StringEscapeUtils.escapeJava(toServer); String serverResponse = "SOME RESPONSE FROM SERVER WITH UNICODE CHARACTERS"; String fromServerUnicodeDecoded = StringEscapeUtils.unescapeJava(serverResponse); 

    FYI Utilizza anche la codifica e la decodifica per il servizio web. La string codificata Unicode dovrebbe essere decodificata dal servizio web e la risposta da parte del servizio web deve essere codificata prima di submit ai client. Le tabelle server devono contenere utf8mb4 invece di utf8, perché il carattere unicode ha bisogno di 4 byte per carattere. Pertanto unicode non sarà rappresentato in 3bytes.

    Ho usato la stessa libreria come te per emoji. Ho usato URLEncoder.encode (commentString, "UTF-8") per la codifica e allo stesso modo, URLDecoder.decode (codificaComment, "UTF-8") per la decodifica.

    Funziona perfettamente per me. Speriamo anche per te.

    Sto usando la stessa libreria … Non è necessario codificare o sfuggire alle emoji … semplicemente getText () .toString () functionrà.

    Segui i passi

    In mysql cambiare la collazione di field a utf8mb4_unicode_ci (il mio database e la collazione di tabelle è utf8_unicode_ci)

    Utilizzato PHP Codigniter sul server così la configuration del database

     'char_set' => 'utf8mb4', 'dbcollat' => 'utf8mb4_unicode_ci' 

    Quindi in Android utilizzare textView.getText().toString(); quindi submit il text senza utilizzare alcuna codifica o fuga

    È ansible codificare e decodificare emoticon senza utilizzare alcuna libreria in android se si riceve unicode dal server.

    Esempio :

     U+1F601 is 16 bit unicode. 

    Sostituire U+ con 0x .

      int originalUnicode=0x1F601; textView.setText(getEmoticon(originalUnicode)); public String getEmoticon(int originalUnicode) { return new String(Character.toChars(originalUnicode)); } 

    Nel mio caso tutti i messaggi nel messaggio scompaiono dopo i simboli & e +, quindi ho deciso di sostituirli prima di submit e dopo aver ricevuto e funziona bene per me.

     private String encodeMessage(String message) { message = message.replaceAll("&", ":and:"); message = message.replaceAll("\\+", ":plus:"); return StringEscapeUtils.escapeJava(message); } private String decodeMessage(String message) { message = message.replaceAll(":and:", "&"); message = message.replaceAll(":plus:", "+"); return StringEscapeUtils.unescapeJava(message); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.