Robert Madsen
Robert Madsen

Reputation: 51

Send plain text mixed with Emojis as Unicode data via SMS by using C# in Unity

I am writing an Android app in Unity using C#. The app will send SMS text messages that include a mixture of text and emojis.

My initial thought is to send the Unicode values of the respective emojis inline with any plain text. I have searched StackOverflow and I haven't found a concise example that solves this problem.

Here is code I have tried:

    string mobile_num = "+18007671111; //Placeholder
    string text = "Test: \\uFFFd\\uFFFd"; //(smile emoji Unicode value)
    char[] chars = text.ToCharArray();
    byte[] bytes = Encoding.UTF8.GetBytes(chars);
    string message = HttpUtility.UrlEncode(bytes);
    string sms = string.Format("sms:{0}?body={1}", mobile_num, message);
    Application.OpenURL(sms);

I need to know: 1. Is this the correct approach? a. if not, please help me correctly encode text + emoji data b. What is the step required to covert so that the final message can be sent via SMS?

Upvotes: 2

Views: 1929

Answers (1)

Robert Madsen
Robert Madsen

Reputation: 51

So after much searching, I found the simplest way in C# is to use:

\U########

Where:

\ is an escape character U is a constant to define a Unicode sequence follows

## is the hex value of the emoticon encoded in exactly 8 characters left filled with zeros if necessary.

For example:

string u = "Smile: \U0001F601";

Will send: Smile: 😁

Thank you Jeppe Stig Nielsen for your insight. For the full discussion follow this link:

How to convert numbers between hexadecimal and decimal

Upvotes: 3

Related Questions