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,简简单单.....

  • 相关阅读:
    hdu 1207 汉诺塔
    hdu 1995 汉诺塔
    hdu 2077 汉诺塔
    android service 学习
    Android apk下载 安装 卸载 打开
    Android之Broadcast, BroadcastReceiver(广播)
    Android底部菜单栏 仿微博效果
    Android 菜单(OptionMenu)大全 建立你自己的菜单
    伪静态
    从Table 表中取出第 m 条到第 n 条的记录
  • 原文地址:https://www.cnblogs.com/ZhuChangwu/p/15313803.html
Copyright © 2011-2022 走看看