欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java过滤非汉字的utf8的字符,java过滤汉字utf8,utf8是变长字符集,单

来源: javaer 分享于  点击 9620 次 点评:169

java过滤非汉字的utf8的字符,java过滤汉字utf8,utf8是变长字符集,单


utf8是变长字符集,单个字符占用1~4个字节。mysql在选择utf8字符集时,最多只能存储3个字节的utf8字符,如果想要保存任意的utf8字符,数据必须用utf8mb4字符集,有些情况下,不能变更已选定的字符集,只好不得以而为之,把输入中的4个字节的utf8字符全部过滤掉,好在,utf8字符集中,汉字是3个字节的。

[Java]代码

static public String filterOffUtf8Mb4(String text) throws UnsupportedEncodingException {        byte[] bytes = text.getBytes("utf-8");        ByteBuffer buffer = ByteBuffer.allocate(bytes.length);        int i = 0;        while (i < bytes.length) {            short b = bytes[i];            if (b > 0) {                buffer.put(bytes[i++]);                continue;            }            b += 256;            if ((b ^ 0xC0) >> 4 == 0) {                buffer.put(bytes, i, 2);                i += 2;            }            else if ((b ^ 0xE0) >> 4 == 0) {                buffer.put(bytes, i, 3);                i += 3;            }            else if ((b ^ 0xF0) >> 4 == 0) {                i += 4;            }        }        buffer.flip();        return new String(buffer.array(), "utf-8");    }
相关栏目:

用户点评