91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現ut8數據庫過濾特殊字符

發布時間:2021-11-16 11:54:24 來源:億速云 閱讀:145 作者:iii 欄目:大數據

本篇內容介紹了“怎么實現ut8數據庫過濾特殊字符”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

ut8數據庫無法保存超多3個字節的utf字符,手寫了一個過濾器,可指定過濾最大字符長度

UTF-8編碼規則 1字節 0xxxxxxx 2字節 110xxxxx 10xxxxxx 3字節 1110xxxx 10xxxxxx 10xxxxxx 4字節 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字節 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6字節 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

實現

public static String utf8M(String str, int m) {
        byte[] bytes = str.getBytes(KtIo.utf8());
        int len = bytes.length;
        int off = 0;
        byte[] buffer = null;
        byte b;
        int s;
        int j, k;
        int lst = len - 1;
        for (int i = 0; i < len; i++) {
            b = bytes[i];
            s = b & 0XFF;
            if (s < 192) {
                if (buffer != null) {
                    buffer[off++] = b;
                }

            } else {
                if (s < 224) {
                    j = 1;

                } else if (s < 240) {
                    j = 2;

                } else if (s < 248) {
                    j = 3;

                } else if (s < 252) {
                    j = 4;

                } else if (b < 254) {
                    j = 5;

                } else {
                    i += 6;
                    continue;
                }

                if (j < m) {
                    // 允許字符長度
                    j += i;
                    if (buffer != null) {
                        buffer[off++] = b;
                        k = j < lst ? j : lst;
                        for (i++; i <= k; i++) {
                            buffer[off++] = bytes[i];
                        }
                    }

                    i = j;

                } else {
                    // 過濾字符長度
                    if (buffer == null) {
                        buffer = bytes;
                        off = i;
                    }

                    i += j;
                }
            }
        }

        return buffer == null ? str : new String(buffer, 0, off, KtIo.charset());
    }

測試

public void test() throws IOException {
        System.out.println(KtStr.utf8M("sda\uD83D\uDC16????大啊\uD83D\uDC01\uD83D\uDC02\uD83D\uDC05\uD83D\uDC07\uD83D\uDC09\uD83D\uDC0D\uD83D\uDC0E\uD83D\uDC10\uD83D\uDC12\uD83D\uDC13\uD83D\uDC15\uD83D\uDC16子\uD83C\uDF40木\uD83C\uDF40青\uD83C\uDF40澄\uD83C\uDF40", 3));
    }

“怎么實現ut8數據庫過濾特殊字符”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜南县| 通州区| 宜兰市| 通许县| 灌南县| 玉溪市| 灌阳县| 湖南省| 九寨沟县| 岳池县| 会同县| 永川市| 厦门市| 盐山县| 富宁县| 大足县| 东乌珠穆沁旗| 乌拉特后旗| 威远县| 怀安县| 来安县| 大足县| 钦州市| 仁怀市| 碌曲县| 工布江达县| 荣成市| 连云港市| 肥城市| 盐源县| 太康县| 萍乡市| 山西省| 白沙| 玉林市| 绍兴县| 饶河县| 察哈| 工布江达县| 高邮市| 大兴区|