首页 > 代码库 > 过滤非汉字的utf8的字符
过滤非汉字的utf8的字符
原文:http://www.oschina.net/code/snippet_564772_13507
utf8是变长字符集,单个字符占用1~4个字节。mysql在选择utf8字符集时,最多只能存储3个字节的utf8字符,如果想要保存任意的utf8字符,数据必须用utf8mb4字符集,有些情况下,不能变更已选定的字符集,只好不得以而为之,把输入中的4个字节的utf8字符全部过滤掉,好在,utf8字符集中,汉字是3个字节的。
标签: <无>
代码片段(1)[全屏查看所有代码]
1. [代码][Java]代码 跳至 [1] [全屏预览]
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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" ); } |
举报
过滤非汉字的utf8的字符
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。