微笑
[em]e101[/em]
撇嘴
[em]e102[/em]
色
[em]e103[/em]
发呆
[em]e104[/em]
得意
[em]e105[/em]
流泪
[em]e106[/em]
害羞
[em]e107[/em]
闭嘴
[em]e108[/em]
睡
[em]e109[/em]
大哭
[em]e110[/em]
尴尬
[em]e111[/em]
发怒
[em]e112[/em]
调皮
[em]e113[/em]
呲牙
[em]e114[/em]
惊讶
[em]e115[/em]
难过
[em]e116[/em]
酷
[em]e117[/em]
冷汗
[em]e118[/em]
抓狂
[em]e119[/em]
吐
[em]e120[/em]
偷笑
[em]e121[/em]
可爱
[em]e122[/em]
白眼
[em]e123[/em]
傲慢
[em]e124[/em]
饥饿
[em]e125[/em]
困
[em]e126[/em]
惊恐
[em]e127[/em]
流汗
[em]e128[/em]
憨笑
[em]e129[/em]
大兵
[em]e130[/em]
奋斗
[em]e131[/em]
咒骂
[em]e132[/em]
疑问
[em]e133[/em]
嘘...
[em]e134[/em]
晕
[em]e135[/em]
折磨
[em]e136[/em]
衰
[em]e137[/em]
骷髅
[em]e138[/em]
敲打
[em]e139[/em]
再见
[em]e140[/em]
擦汗
[em]e141[/em]
抠鼻
[em]e142[/em]
鼓掌
[em]e143[/em]
糗大了
[em]e144[/em]
坏笑
[em]e145[/em]
左哼哼
[em]e146[/em]
右哼哼
[em]e147[/em]
哈欠
[em]e148[/em]
鄙视
[em]e149[/em]
委屈
[em]e150[/em]
快哭了
[em]e151[/em]
阴险
[em]e152[/em]
亲亲
[em]e153[/em]
吓
[em]e154[/em]
可怜
[em]e155[/em]
菜刀
[em]e156[/em]
西瓜
[em]e157[/em]
啤酒
[em]e158[/em]
篮球
[em]e159[/em]
乒乓
[em]e160[/em]
咖啡
[em]e161[/em]
饭
[em]e162[/em]
猪头
[em]e163[/em]
玫瑰
[em]e164[/em]
凋谢
[em]e165[/em]
示爱
[em]e166[/em]
爱心
[em]e167[/em]
心碎
[em]e168[/em]
蛋糕
[em]e169[/em]
闪电
[em]e170[/em]
炸d
[em]e171[/em]
刀
[em]e172[/em]
足球
[em]e173[/em]
瓢虫
[em]e174[/em]
便便
[em]e175[/em]
月亮
[em]e176[/em]
太阳
[em]e177[/em]
礼物
[em]e178[/em]
拥抱
[em]e179[/em]
强
[em]e180[/em]
弱
[em]e181[/em]
握手
[em]e182[/em]
胜利
[em]e183[/em]
抱拳
[em]e184[/em]
勾引
[em]e185[/em]
拳头
[em]e186[/em]
差劲
[em]e187[/em]
爱你
[em]e188[/em]
NO
[em]e189[/em]
OK
[em]e190[/em]
爱情
[em]e191[/em]
飞吻
[em]e192[/em]
跳跳
[em]e193[/em]
发抖
[em]e194[/em]
怄火
[em]e195[/em]
转圈
[em]e196[/em]
磕头
[em]e197[/em]
回头
[em]e198[/em]
跳绳
[em]e199[/em]
挥手
[em]e200[/em]
激动
[em]e201[/em]
街舞
[em]e202[/em]
献吻
[em]e203[/em]
左太极
[em]e204[/em]
右太极
呵呵,希望能帮到你
QQ表情代码:[em]e100[/em] 微笑
[em]e101[/em] 撇嘴
[em]e102[/em] 色
[em]e103[/em] 发呆
[em]e104[/em] 得意
[em]e105[/em] 流泪
[em]e106[/em] 害羞
[em]e107[/em] 闭嘴
[em]e108[/em] 睡
[em]e109[/em] 大哭
[em]e110[/em] 尴尬
[em]e111[/em] 发怒
[em]e112[/em] 调皮
[em]e113[/em] 呲牙
[em]e114[/em] 惊讶
[em]e115[/em] 难过
[em]e116[/em] 酷
[em]e117[/em] 冷汗
[em]e118[/em] 抓狂
[em]e119[/em] 吐
[em]e120[/em] 偷笑
[em]e121[/em] 可爱
[em]e122[/em] 白眼
[em]e123[/em] 傲慢
[em]e124[/em] 饥饿
[em]e125[/em] 困
[em]e126[/em] 惊恐
[em]e127[/em] 流汗
[em]e128[/em] 憨笑
[em]e129[/em] 大兵
[em]e130[/em] 奋斗
[em]e131[/em] 咒骂
[em]e132[/em] 疑问
[em]e133[/em] 嘘...
[em]e134[/em] 晕
[em]e135[/em] 折磨
[em]e136[/em] 衰
[em]e137[/em] 骷髅
[em]e138[/em] 敲打
[em]e139[/em] 再见
[em]e140[/em] 擦汗
[em]e141[/em] 抠鼻
[em]e142[/em] 鼓掌
[em]e143[/em] 糗大了
[em]e144[/em] 坏笑
[em]e145[/em] 左哼哼
[em]e146[/em] 右哼哼
[em]e147[/em] 哈欠
[em]e148[/em] 鄙视
[em]e149[/em] 委屈
[em]e150[/em] 快哭了
[em]e151[/em] 阴险
[em]e152[/em] 亲亲
[em]e153[/em] 吓
[em]e154[/em] 可怜
[em]e155[/em] 菜刀
[em]e156[/em] 西瓜
[em]e157[/em] 啤酒
[em]e158[/em] 篮球
[em]e159[/em] 乒乓
[em]e160[/em] 咖啡
[em]e161[/em] 饭
[em]e162[/em] 猪头
[em]e163[/em] 玫瑰
[em]e164[/em] 凋谢
[em]e165[/em] 示爱
[em]e166[/em] 爱心
[em]e167[/em] 心碎
[em]e168[/em] 蛋糕
[em]e169[/em] 闪电
[em]e170[/em] 炸d
[em]e171[/em] 刀
[em]e172[/em] 足球
[em]e173[/em] 瓢虫
[em]e174[/em] 便便
[em]e175[/em] 月亮
[em]e176[/em] 太阳
[em]e177[/em] 礼物
[em]e178[/em] 拥抱
[em]e179[/em] 强
[em]e180[/em] 弱
[em]e181[/em] 握手
[em]e182[/em] 胜利
[em]e183[/em] 抱拳
[em]e184[/em] 勾引
[em]e185[/em] 拳头
[em]e186[/em] 差劲
[em]e187[/em] 爱你
[em]e188[/em] NO
[em]e189[/em] OK
[em]e190[/em] 爱情
[em]e191[/em] 飞吻
[em]e192[/em] 跳跳
[em]e193[/em] 发抖
[em]e194[/em] 怄火
[em]e195[/em] 转圈
[em]e196[/em] 磕头
[em]e197[/em] 回头
[em]e198[/em] 跳绳
[em]e199[/em] 挥手
[em]e200[/em] 激动
[em]e201[/em] 街舞
[em]e202[/em] 献吻
[em]e203[/em] 左太极
[em]e204[/em] 右太极
网上已经有开源的了!http://code.iamcal.com/php/emoji/ 你参考下iOS 5.0之前,苹果都是采用3个字节来承接 emoji 表情,Java 的普通 char 可以支持显示。但 iOS 5.0 之后, 苹果升级了系统自带的 emoji 表情输入法,用的 Unicode 6 标准来统一,是采用4个 bytes 来承接一个 emoji 表情。如果不做处理的话,这种表情直接存储到 mysql5.5 以下的数据库是会报错的。就像这两个表情一样:口口, 在 Windows 8 以下估计都不支持显示,可能会显示成框框,可能压根就是空白, 你可以在 Mac 中使用Safari 浏览器中,就可以看到。经过测试,在 Mac 就算用 Chrome 浏览器(Version 25.0.1364.172)也是不行的。
这种数据在 Mysql 5.5 之前,UTF-8 支持1-3个字节的编码,从 Mysql5.5 开始后,可以支持4个字节的 UTF 编码,但要特殊标记。修改 Mysql 相应存储字段为 utf8mb4 。修改语句如下:
1ALTER TABLE table_name
2 MODIFY COLUMN content varchar(500) CHARACTER
3 SET utf8mb4 COLLATE utf8mb4_unicode_ci
4 DEFAULT NULL COMMENT 'content of message'
在某种业务情景下,我们可以选择过滤掉这种“非法”的字符。我采用的方式是,在字符上面做 *** 作,下面是Java示例代码,核心的代码附上,应该是 无法直接下载就能够编译,你得小小的做一些微调,没有额外的依赖:
01public class EmojiFilter {
02
03/**
04 * 检测是否有emoji字符
05 * @param source
06 * @return 一旦含有就抛出
07 */
08public static boolean containsEmoji(String source) {
09if (StringUtils.isBlank(source)) {
10return false
11}
12
13int len = source.length()
14
15for (int i = 0i <leni++) {
16char codePoint = source.charAt(i)
17
18if (isEmojiCharacter(codePoint)) {
19//do nothing,判断到了这里表明,确认有表情字符
20return true
21}
22}
23
24return false
25}
26
27private static boolean isEmojiCharacter(char codePoint) {
28return (codePoint == 0x0) ||
29(codePoint == 0x9) ||
30(codePoint == 0xA) ||
31(codePoint == 0xD) ||
32((codePoint >= 0x20) &&(codePoint <= 0xD7FF)) ||
33((codePoint >= 0xE000) &&(codePoint <= 0xFFFD)) ||
34((codePoint >= 0x10000) &&(codePoint <= 0x10FFFF))
35}
36
37/**
38 * 过滤emoji 或者 其他非文字类型的字符
39 * @param source
40 * @return
41 */
42public static String filterEmoji(String source) {
43
44if (!containsEmoji(source)) {
45return source//如果不包含,直接返回
46}
47//到这里铁定包含
48StringBuilder buf = null
49
50int len = source.length()
51
52for (int i = 0i <leni++) {
53char codePoint = source.charAt(i)
54
55if (isEmojiCharacter(codePoint)) {
56if (buf == null) {
57buf = new StringBuilder(source.length())
58}
59
60buf.append(codePoint)
61} else {
62}
63}
64
65if (buf == null) {
66return source//如果没有找到 emoji表情,则返回源字符串
67} else {
68if (buf.length() == len) {//这里的意义在于尽可能少的toString,因为会重新生成字符串
69buf = null
70return source
71} else {
72return buf.toString()
73}
74}
75
76}
77}
还有优化的空间,但是已经能够满足大多数情况的需求,附上单元测试(JUnit4):
01public class EmojiFilterTest {
02
03
04 /**
05 * 测试emoji表情
06 */
07@Test
08public void fileterEmoji() {
09String s = "<body>口口213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)!" +
10"(@*$&@(!)@*)!&$!)@^%@(!. 口口口], "
11String c = Utils.filterEmoji(s)
12assertFalse(s.equals(c))
13String expected = "<body>213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
14"!(@*$&@(!)@*)!&$!)@^%@(!. ], "
15assertEquals(expected, c)
16//assertSame(c, expected)
17assertSame(expected, "<body>213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
18"!(@*$&@(!)@*)!&$!)@^%@(!. ], ")
19assertSame(c, Utils.filterEmoji(c))
20}
21
22}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)