检测 utf8mb4 字符集要求

Saq*_*Ali 1 java mysql string utf-8 utf8mb4

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

Jon*_*oni 5

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

boolean requiresMb4(String s) {
    int len = s.length();
    return len != s.codePointCount(0, len);
}
Run Code Online (Sandbox Code Playgroud)