如何在C#中发送包含表情符号的字符串短信
解决短信中表情符号无法发送的问题
问题分析
你用HttpUtility.HtmlEncode/HtmlDecode处理表情符号的方式完全错误:
- "U+1F3CD"是Unicode字符的标识格式,但C#不识别这种写法,需用
\u开头的转义序列 - 短信内容不需要HTML编码,编码后会把表情转成HTML实体,短信平台无法解析为表情符号
- 部分表情是Unicode代理对(比如🏍️由
\uD83C和\uDFCD组成),单独转义单个字符会失效
正确实现方式
方式1:直接嵌入表情符号
直接在字符串中写入表情本身,和你的示例一致,确保项目文件编码为UTF-8:
var message = "Thank you for using Our Product 🏍️ ✨ Be Happy Be Safe!";
方式2:使用C# Unicode转义序列
如果无法直接输入表情,用C#支持的Unicode转义写法:
// 🏍️ 是代理对,需用两个转义字符;✨ 是单个Unicode字符 var message = "Thank you for using Our Product \uD83C\uDFCD \u2728 Be Happy Be Safe!";
关键注意事项
- 检查
Post方法的请求编码:确保发送请求时使用UTF-8编码,比如设置Content-Type为application/x-www-form-urlencoded; charset=utf-8或application/json; charset=utf-8 - 确认短信服务商支持Unicode表情:部分传统短信网关仅支持GSM 03.38字符集,需联系服务商开启Unicode短信支持,否则无法发送表情符号
内容的提问来源于stack exchange,提问作者Pratex
相关产品推荐
相关产品推荐

