过滤iphone表情
iphone表情,又称emoji表情,是苹果一个方便了用户却坑了开发人员的输入法的特殊字符。
因为emoji表情有时候不支持gb编码的数据库,在后台死活过滤都过滤不掉,但偏偏在入库时被过滤的,但是记录已经生成了。
所以造成一个问题是,如果用户单一输入一个表情并提交,数据库有记录却没有内容,所以很坑爹。
找了很久终于又解决方案,菜鸟的心得,分享下。
网上得知汉字的unicode编码范围是0x4e00~0x9fa5,但程序执行的utf-16编码后,输出地格式确实%格式的。一直搞不懂这个问什么,后来才知道,0x4e00对应的是%4e%00。
而当对一个汉字进行utf-16编码是,出现的是%FE%FF%57%28,对emoji表情的编码是%FE%FF%D8%3D%DE%04,除了长度确实很难找出与汉字的区别。
其实%FE%FF是一个标志,一个big endian编码的正序标志,表示之后的%57%28即为0x5728的意思。
所以emoji的编码就得出是%D8%3D%DE%04,其实这是由2个utf-16组成的utf-32编码,分为D83D与DE04。
0xD800~0xDfff 范围用于扩展,两个0xd800以上的值一同扩展出一个特殊的UTF-32范围内的值,也就是emoji的编码。
知道与汉字的区别就很好过滤了,直接replace掉就行了。
注意,emoji表情与汉字的utf-8是没什么区别的,可能我比较笨找不到,但之前确实是卡死在utf-8这个编码上了,因为web默认返回的就是utf-8,所以很难想到要用utf-16.
String finalStr=contents;
System.out.println("=======finalStr============"+finalStr+" 长度为====="+finalStr.length());
contents=URLEncoder.encode(contents, "utf-16");
//过滤掉各种特殊符号,数字,字母
finalStr = finalStr.replaceAll("[\\pP|~|$|^|<|>|\\||\\+|=]*", "");
finalStr = finalStr.replaceAll("[A-Za-z0-9\\d]" , "");
System.out.println("=======finalStr============"+finalStr+" 长度为====="+finalStr.length());
finalStr=URLEncoder.encode(finalStr, "utf-16");
// contents=URLEncoder.encode(contents, "utf-16");
finalStr=finalStr.replace("%fe%ff", "");
finalStr=finalStr.replace("%FE%FF", "");
System.out.println("==========finalStr============"+finalStr+" 长度为====="+finalStr.length());
int splitLen=6;
int pos=0;
int len=(finalStr.length()/splitLen);
System.out.println("==========len============"+len);
String[] splitStr=new String[len];
for(int i=0;i<len;i++){
System.out.println("==========pos============"+pos);
splitStr[i]=finalStr.substring(pos, pos+splitLen);
pos+=splitLen;
System.out.println("splitStr["+i+"]============"+splitStr[i]);
if(splitStr[i].substring(1, 2).equals("d") || splitStr[i].substring(1, 2).equals("D")){
contents=contents.replace(splitStr[i], "");
System.out.println("==========该字符要被和谐啦=========");
// System.out.println("splitStr["+i+"]=="+splitStr[i]);
}
}
System.out.println("==========最终的utf-16==="+contents);
contents=URLDecoder.decode(contents, "utf-16");
System.out.println("==========最终的文字==="+contents+" 长度为"+contents.length());
转载于:https://www.cnblogs.com/sephy/archive/2012/06/28/2567890.html
过滤iphone表情相关推荐
- hive自定义函数过滤emoj表情符
mysql插入数据问题:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8D\xE8\xBE-' for column 'j ...
- iphone表情显示问号_如何在iPhone上使用表情符号
iphone表情显示问号 Emoji have been taking the texting world by storm for the last couple of years, but if ...
- java emoji过滤_java过滤emoji表情
java手机端网页常用的过滤emoji表情,注意:过滤常规emoji表情,iso或安卓一些手机自带的特殊表情不在过滤范围 import java.util.regex.Matcher; import ...
- java过滤emoji表情(成功率高)
转载自:http://blog.csdn.net/huangchao064/article/details/53283738 基本能过滤大部分的ios,安卓,微信emoji表情 有很多别的帖子搜出来很 ...
- iOS 过滤emoji表情
iOS输入框过滤emoji表情 // // ViewController.m // test // // Created by 郭宇 on 13-11-15. // Copyright (c) 201 ...
- 匹配表情emoji 正则_详解Android过滤emoji表情正则表达式
做了一些信息提交的操作,输入了Emoji表情时,后台数据库无法存储 原因:UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去 ...
- iphone表情显示问号_如何在iPhone上搜索特定的表情符号
iphone表情显示问号 Most of us use emoji on our iPhone, but until recently finding the right one has been t ...
- java过滤器过滤Emoji 表情
1.web.xml添加过滤器 <filter><filter-name>EmojiFilter</filter-name><filter-class>c ...
- js过滤emoji表情
使用JS过滤emoji表情的主要原因:input标签中输入emoji表情,提交表单后插入数据库报错. 原因是因为UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而MySQL的ut ...
最新文章
- 再见,Navicat!同事安利的这个IDEA的兄弟,真香!
- JPA中实现双向一对多的关联关系
- C++实现离散余弦变换(参数为二维指针)
- logrotate日志管理工具
- plc和pc串口通讯接线_PLC与PC机之间的串行通信
- gstreamer/deepstream方面的博文,全网首发且唯一,有图为证
- Java基础练习题---this
- ORACLE 错误 904
- WinForm大型企业ERP系统
- OSS回源的几种方式和应用场景
- 微信开发获取签名wx.config
- day05匿名函数,内置函数,二分法,递归,模块
- WLAN--什么是信道(Channel)
- 盗梦空间科普札记之一:梦里乾坤嵌套深,醒来可知在哪层?
- 不用找,你想要的手抄报 小报印刷模板素材都在这里
- 关于java字符流Reader.read()方法的个人理解
- BioPython ② | 面向对象编程Object Oriented Programming
- 刚入职场需要用到的5个顶尖自学网
- Java实现搜索在Bait游戏中的应用研究
- DTVideo UE录屏插件使用说明
热门文章
- reset.css 重置样式表
- C++中的atan2与atan
- Sleep()函数的使用方法详解
- windows10开机蓝牙自动连接
- WinForm DataGridView制作表格
- 论文要怎么读?研究院院长孙剑的最新体会都在这里了
- 平台云Deis部署3-deis平台安装
- HTML5-实现英雄联盟官网《电竞小说》和《在线客服》页面
- python批量操作word文档实战_python批量实现Word文件转换为PDF文件
- DUF:Deep Video Super-Resolution Network Using Dynamic Upsampling Filters ...阅读笔记