如何删除 4 字节字符?
How to remove 4 byte characters?
我与 facebook 集成,可以向我发送特殊字符(表情符号等,例如 u+1f600,称为笑脸)。无法将其存储在我的 UTF8(不是 UTF8mb4)数据库中,那么如何使字符串 UFT8(不是 UTF8mb4)友好?
我无法将我的数据库转换为 UTF8mb4。
您可以使用简单的正则表达式:
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 位代码单元组成,其范围在正则表达式中给出。
我与 facebook 集成,可以向我发送特殊字符(表情符号等,例如 u+1f600,称为笑脸)。无法将其存储在我的 UTF8(不是 UTF8mb4)数据库中,那么如何使字符串 UFT8(不是 UTF8mb4)友好?
我无法将我的数据库转换为 UTF8mb4。
您可以使用简单的正则表达式:
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 位代码单元组成,其范围在正则表达式中给出。