zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

后端如何存储表情包?

存储 如何 表情
2023-09-27 14:25:58 时间

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

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


数据流很简单如下


image


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


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


image


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


如何应对外包公司(文思海辉)的Python后端面试 最近春招如火如荼,我接触到的几位同学也纷纷去市场里试了试水,不得不说由于疫情的影响,导致目前中等水平的开发者择业有了些许困难,毕竟不是所有人都能去一二线的大厂,有的时候海浪过大,我们不得不收起风帆,卧薪尝胆,入港蛰伏,所以我们可以把目光投向一些相对要求不是特别高的岗位,比如外包岗,当然了业内其实对外包公司有一些偏见,评价不高。客观的说,外包公司确实有一些不尽如人意的地方,但是其实也有一些好处不能忽略:比如接触的项目多,接触的人多,积累的经验快,适合想积累经验的人,同时有进入甲方的机会,如果业务做得不错,有一定机会能进入甲方公司,一般甲方如果是大厂的话直接进不去但通过外包进去后有一定概率能转甲方