java 替换四个字节的字符 ‘\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ??

/**
     * 替换四个字节的字符 ‘\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ??
     * @author ChenGuiYong
     * @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", "");
    }
结果:
String title = "ff的范德萨分????????Llfldakf;dsk。f????????????daslfjdsa;lfkjdsd‘j‘l‘f‘k‘d‘j‘sa‘l‘k";
        System.out.println(Test_Common2.removeFourChar(title).replaceAll("0000", ""));
        //ff的范德萨分Llfldakf;dsk。fdaslfjdsa;lfkjdsd‘j‘l‘f‘k‘d‘j‘sa‘l‘k
时间: 2024-08-22 18:51:45

java 替换四个字节的字符 ‘\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ??的相关文章

unicode表情插入数据库的问题,Incorrect string value: &#39;\xF0\x9F\x98\x84\xF0\x9F

问题描述:从新浪微博抓取消息保存到MySQL数据中,对应数据库字段为varchar,字符编码utf-8.部分插入成功,部分插入失败,报错如标题. 在网上查询,有人说是编码问题,建议修改编码格式,比如改成gbk,UTF-8,blob等等,但是几乎没有人给出更详细的答案.在一个英文网站上,才发现真正错误的原因.链接1 链接2 错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为

Incorrect string value: &#39;\xF0\x9F\x98\x84\xF0\x9F

问题描述:从新浪微博抓取消息保存到MySQL数据中,对应数据库字段为varchar,字符编码utf-8.部分插入成功,部分插入失败,报错如标题. 在网上查询,有人说是编码问题,建议修改编码格式,比如改成gbk,UTF-8,blob等等,但是几乎没有人给出更详细的答案.在一个英文网站上,才发现真正错误的原因.链接1 链接2 错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为

特殊符号存入mysql数据库时报错:Incorrect string value: &#39;\xF0\x9F\x98\x84\xF0\x9F的解决方法

问题描述:从新浪微博抓取消息保存到MySQL数据中,对应数据库字段为varchar,字符编码utf-8.部分插入成功,部分插入失败,报错如标题. 在网上查询,有人说是编码问题,建议修改编码格式,比如改成gbk,UTF-8,blob等等,但是几乎没有人给出更详细的答案.在一个英文网站上,才发现真正错误的原因.链接1 链接2 错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为

mysql 存储 emoji报错( Incorrect string value: &#39;\xF0\x9F\x98\x84\xF0\x9F)的解决方案

1.报错原因: mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节. 2.解决办法: 修改mysql的配置文件,windows下的为my.ini(linux下的为my.cnf),修改的内容都一样. [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server

Java IO 转换流 字节转字符流

Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| FileInputStream 读取文件的输入字节流.------------| BufferedInputStream 缓冲输入字节流. 该类内部其实就是维护了一个8kb(8192b)字节数组而已. 该类出现的目的是为了提高读取文件数据的效率. 输出字节流:---------| OutputStream

mysql 保存emoji时报,数据库报错:Caused by: java.sql.SQLException: Incorrect string value: &#39;\xF0\x9F\x98\x82\xF0\x9F...&#39; for column &#39;review&#39; at row 1

错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智能手机输入法中的表情.那为什么会报错呢?因为mysql中的utf-8并不是真正意义上的utf-8,它只能存储1~3个字节长度的utf-8编码,如果想存储4个字节的必须用utf8mb4类型.不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3. 常用

mysql存表情出错的解决方案(类似\xF0\x9F\x98\x86\xF0\x9F)

之前以为mysql设置utf-8以及昵称decode后就万事大吉了,结果最近才发现对于4字节的表情会报错. 报错信息如下: data: nullmessage: " ### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x86\xF0\x9F...' for column 'nickName' at row 1 ### The error may invol

【Mysql】存储emoji表情报错(Incorrect string value: &#39;\xF0\x9F\x98\x82\xF0\x9F...&#39;)的解决方案

普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题.涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点 Mysql 版本的限制,Mysql 5.5.3之前的版本,支持的utf8为3字节的,Mysql 5.5.3之后的版本支持utf8mb4 修改mysql的配置文件,windows下的为my

Java IO学习--(五)字节和字符数组

内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中常用字节和字符数组在应用中临时存储数据.而这些数组又是通常的数据读取来源或者写入目的地.如果你需要在程序运行时需要大量读取文件里的内容,那么你也可以把一个文件加载到数组中.当然你可以通过直接指定索引来读取这些数组.但如果设计成为从InputStream或者Reader,而不是从数组中读取某些数据的话,你会用什么组件呢? 从 InputStream 或 Reader中读取数