how to encode and decode emoji in android?

We can use commons-lang(commons-lang-2.5.jar) library for encoding and decoding of the unicode characters. Download jar file here or use gradle: compile 'org.apache.commons:commons-lang3:3.4'.

For Encoding useStringEscapeUtils.escapeJava(String text)
This can be used in android EditText when call getText method, where it will encode the unicode characters properly before sending to web server.

For Decoding useStringEscapeUtils.unescapeJava(String text)
This can be used in android TextView to setText, where it will decode the unicode characters properly after receiving the response from web server.

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 Use the encoding and decoding for web service side as well. Unicode encoded string should be decoded from web service and response from web service should be encoded before sending to clients. Server tables should contain utf8mb4 instead of utf8, because unicode character needs 4bytes per character. Therefore unicode will not be represented in 3bytes.

Leave a Comment

tech