[Java] 如何識別字符串中是否包含無法使用utf8-mb4字符集存儲的特殊字符


Answers

而不是找到字符串的特殊字符,你可以做一件事情,你可以將字符串轉換為十六進制格式,然後回來,你可以轉換成以前的字符串

public static synchronized String toHex(byte [] buf){
    StringBuffer strbuf = new StringBuffer(buf.length * 2);
    int i;
    for (i = 0; i < buf.length; i++) {
        if (((int) buf[i] & 0xff) < 0x10){
            strbuf.append("0");
        }
        strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
    }
    return strbuf.toString();
}

通過使用下面的功能,你可以轉換回原來的字符串

public synchronized static byte[] hexToBytes(String hexString) {
    HexBinaryAdapter adapter = new HexBinaryAdapter();
    byte[] bytes = adapter.unmarshal(hexString);
    return bytes;
}
Question

參考這個tweet和下面的線程 ,我們正試圖在數據庫中存儲一個類似的鳴叫。 我無法在MySQL中存儲這個鳴叫,我想知道如何識別,如果字符串包含一個字符,不能由utf8-mb4字符集處理,以便我可以避免存儲它。