• 后端如何存储表情包?


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

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

    数据流很简单如下:

    数据流

    所以与其说是让后端支持存储表情包,倒不如说成是让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,简简单单.....

  • 相关阅读:
    IIS和ASP.NET2.0
    VS.NET里关于不能够使用向导的问题
    CodeFile
    判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
    托管和非托管资源
    ASP.NET 2.0页面框架的几处变化
    导出QQWry.Dat中IP地址到文件[C#]
    面向对象在数据库应用程序中的应用(dotNet)
    如何取得IP/用户名等信息
    验证Email是否真正存在(上)
  • 原文地址:https://www.cnblogs.com/ZhuChangwu/p/15313803.html
Copyright © 2020-2023  润新知