如何删除4个字节的字符?

时间:2015-03-22 19:08:28

标签: c# .net utf-8 character-encoding character

我与facebook集成,向我发送特殊字符(表情符号等,例如u + 1f600,称为笑脸)。无法将其存储在我的UTF8(不是UTF8mb4)数据库中,那么如何才能使字符串UFT8(不是UTF8mb4)友好?

我无法将数据库转换为UTF8mb4。

1 个答案:

答案 0 :(得分:1)

您可以使用简单的正则表达式:

var rx = new Regex(@"[\uD800-\uDBFF][\uDC00-\uDFFF]");
string str = "abcd\U0001D11Eabcd";
str = rx.Replace(str, "?"); // abcd?abcd

如果查看http://en.wikipedia.org/wiki/UTF-16,您会看到非BMP字符由两个16位代码单元组成,其范围在Regex中。