A standard text message can contain 160 characters. If you include an emoji, the character limit is reduced to 70. Why? Good question. In order to understand the answer, you'll need familiarize yourself with a concept called character encoding.
Basically, computers process numbers—but humans like text. So what computers do is translate your text message into a "number language" then translate it back to text on your subscriber's phone.
"Number language" is a term we made up. The actual term is character encoding.
GSM-7 is the most commonly used character encoding. With GSM-7, each character takes up 7 bits each. (A bit is a unit of data. Like tablespoons, but for computer data.)
Emojis or special characters like ~, @, $ aren't included in GSM-7. Therefore, when you add an emoji or special character to your message, it must be encoded in UCS-2. With UCS-2, each character takes up 16 bits. That's why your message has to be shorter.