zoukankan      html  css  js  c++  java
  • 后端如何存储表情包?

    前几天项目需要后端支持存储输入法中的表情包,一开始以为挺复杂,结果大意了。

    站在巨人的肩膀上让后端支持存储表情包简单的很。

    数据流很简单如下:

    数据流

    所以与其说是让后端支持存储表情包,倒不如说成是让MySQL支持存储表情包。

    而且像123abc这种字符串也好,或者是123这种数字也好,亦或是表情包也罢,他们其实都有自己对应的编码格式、或者是编码表。就好比ASCII编码表中包含了a、b、c...z 等如下:

    ACSII表中的符号占一个字符,对欧美佬来说,ACSII表中的符号可能以及基本够用了,但是对亚太地区的国家,比如中国,我们使用中文,所以需要新的编码表容纳中文。

    比如我们常听的utf8编码表就支持中文。MySQL的数据库表自然也是支持urf8编码。 换句话说,我们想往MySQL写数据时,需要告诉它我们的数据是啥编码格式的。如果我们不告诉它,或者是它本身不支持某种编码,那读写MYSQL肯定是有问题。


    表情包对应的编码表是utf8mb4,它占4个字符。所以如果你想让MYSQL支持存储表情包在创建库表时需要明确指定编码格式是utf8mb4

    CREATE TABLE `test` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    ) ENGINE=InnoDB 
    	DEFAULT CHARSET=utf8mb4 
    	COMMENT='test';
    

    utf8mb4是utf8的超集,我们特别推荐你在创建库表时使用utf8mb4,而不是使用utf8

    除了设置库表的编码之外,还需要设置MySQL的每个连接使用的编码,是的,这个单个会话的编码也是可以设置的。使用MySQL命令行类似如下:

    set names utf8;
    

    当然一般我们是在代码中和MySQL建立链接,所以不同的ORM框架会对应着不同的配置方式,但是他们肯定都会支持你设置每个连接使用的编码集。比如spring中可以如下设置

    spring.datasource.url=jdbc:mysql://xxx/test?useUnicode=true&usessl=false&characterEncoding=utf8mb4
    

    Thats all,简简单单.....

  • 相关阅读:
    ApacheShiro反序列化远程代码执行 漏洞处理
    js判断是电脑(pc)访问还是手机(mobile)访问
    MySQL实现主从库,AB复制配置
    js实现回到顶部功能
    JAVA结合Redis处理缓存穿透问题
    Apache Shiro使用官方自带的生成AES密钥
    JAVA将Object数组转换为String数组
    JAVA中数组(Array)、字符串(String)、集合(List、Set)相互转换
    输入npm install 报错npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@4.13.1 postinstall: `node scripts/build.js`
    tomcat的部署jspgou+优化
  • 原文地址:https://www.cnblogs.com/ZhuChangwu/p/15313803.html
Copyright © 2011-2022 走看看