检测utf8mb4字符集要求

我们有一个只支持utf8的mySQL DB。 但是我们正在获得一些需要utf8mb4存储在mySQL中的数据源。 我们如何检测(在Java中)字符串是否需要utf8mb4字符集?

需要utf8mb4的字符在Java中表示为代理对,占用2个字符。 因此,检测它们的一种简单方法是检查字符串中字符串的长度是否与代码点数相同:

boolean requiresMb4(String s) { int len = s.length(); return len != s.codePointCount(0, len); }