emoj表情保存,emoj错误
来源:互联网 发布:苹果手机清除数据 编辑:程序博客网 时间:2024/04/30 05:07
前端时间开发app服务,在网上爬取文章时,总是在保存特定的几条内容时出现sql错误,如下图:
java.sql.SQLException:Incorrect string value: '\xf0\x9f' ... 等错误,经过分析发现时改文章包含表情emoj符号,在保存数据的时候,mysql数据库设置的编码为UTF-8格式,并不支持,对应的支持编码为utf8mb4 ,可是在设计数据库的时候并没有想到emoj表情的的事情,现在如果修改数据类型,对应的程序链接也需要修改,不能指定编码格式,未知的问题不清楚,最后的解决方案只能是过滤掉文章中包含的emoj表情符号,
后续app会出聊天程序,设置成utf8mb4也是不可避免的。
过滤方案如下:
/** * 替换四个字节的字符 ‘\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ?? * @author * @data 2015年8月11日 上午10:31:50 * @param content * @return */ public static String removeFourChar(String content) { byte[] conbyte = content.getBytes(); for (int i = 0; i < conbyte.length; i++) { if ((conbyte[i] & 0xF8) == 0xF0) { for (int j = 0; j < 4; j++) { conbyte[i+j]=0x30; } i += 3; } } content = new String(conbyte); return content.replaceAll("0000", ""); }
关于emoj相关的知识点:
/**
*
* 本类的主要功能是将带有emoji的字符串,格式化成unicode字符串,并且提供可见unicode字符反解成emoji字符
*
*
* 相关识知点:
* <b>
* Unicode平面,
* BMP的字符可以使用charAt(index)来处理,计数可以使用length()
* 其它平面字符,需要用codePointAt(index),计数可以使用codePointCount(0,str.lenght())</b>
*
* Unicode可以逻辑分为17平面(Plane),每个平面拥有65536( = 216)个代码点,虽然目前只有少数平面被使
* 用。
* 平面0 (0000–FFFF): 基本多文种平面(Basic Multilingual Plane, BMP).
* 平面1 (10000–1FFFF): 多文种补充平面(Supplementary Multilingual Plane, SMP).
* 平面2 (20000–2FFFF): 表意文字补充平面(Supplementary Ideographic Plane, SIP).
* 平面3 (30000–3FFFF): 表意文字第三平面(Tertiary Ideographic Plane, TIP).
* 平面4 to 13 (40000–DFFFF)尚未使用
* 平面14 (E0000–EFFFF): 特别用途补充平面(Supplementary Special-purpose Plane, SSP)
* 平面15 (F0000–FFFFF)保留作为私人使用区(Private Use Area, PUA)
* 平面16 (100000–10FFFF),保留作为私人使用区(Private Use Area, PUA)
*
* 参考:
* 维基百科: http://en.wikipedia.org/wiki/Emoji
* GITHUB: http://punchdrunker.github.io/iOSEmoji/
* 杂项象形符号:1F300-1F5FF
* 表情符号:1F600-1F64F
* 交通和地图符号:1F680-1F6FF
* 杂项符号:2600-26FF
* 符号字体:2700-27BF
* 国旗:1F100-1F1FF
* 箭头:2B00-2BFF 2900-297F
* 各种技术符号:2300-23FF
* 字母符号: 2100–214F
* 中文符号: 303D 3200–32FF 2049 203C
* Private Use Area:E000-F8FF;
* High Surrogates D800..DB7F;
* High Private Use Surrogates DB80..DBFF
* Low Surrogates DC00..DFFF D800-DFFF E000-F8FF
* 标点符号:2000-200F 2028-202F 205F 2065-206F
* 变异选择器:IOS独有 FE00-FE0F
* /
如果有表情的unicode码大于4位 比如 1f20b 代表笑脸
Character.toChars(Integer.parseInt("1f60d", 16)) 使用这种方法可以打印
0 0
- emoj表情保存,emoj错误
- mysql兼容emoj表情
- mysql数据库存放emoj等表情内容
- 微信公众号emoj表情添加
- 微信传回昵称带有emoj表情,php去除emoj表情
- 如何将Emoj表情插入mysql5.6数据库__python+mysqldb
- 判断输入的内容是否包含emoj表情
- mysql字符串不支持emoj表情的处理方法
- java 判断字符串中是否包含emoj表情及过滤。
- php 内容中emoj表情处理使正常显示
- Hibernate JDBC Mysql Emoj
- mysql设置数据库和表字符集以支持emoj表情
- 2016年1月10-----------开发WebView+ListView+ScrollView+emoj表情库 有感
- java 判断字符串中是否包含emoj表情及过滤,完美解决。
- 解决TextView富文本显示时emoj或图片和文字不对齐的问题
- mysql emoji表情 保存utf8mb4 错误原因总结
- mysql保存Unicode表情
- mysql保存emoji表情
- 函数的四种调用模式
- numpy tolist()
- Trafodion成熟的SQL on HBase解决方案
- tcp,udp,http等实现机制与异同
- 【Java】java.util.Objects 工具类方法研究
- emoj表情保存,emoj错误
- 【html标签 表单隐藏域】input表单隐藏域及其使用方法
- 正则表达式小结
- 移动端懒加载要点分析
- 解决ie6 ie7 兼容性问题
- SQL操作
- postgresql的备份与还原命令
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 【Git】我遇到过的错误整理(不定期更新)