MySQL支持emoji

方案1: 应用层支持

MySQL默认的数据库编码是utf8,对于emoji文字是不能直接存储的,要想存储emoji,有许多库支持对emoji的转换,例如将😊转存为:smile:,放在数据库里,在从数据库里取出来的时候,再转换为😊,这是应用层的方案。

方案2: 存储层支持

MySQL编码设置为utf8mb4,直接支持emoji,不需要应用层的改动。

注意事项:
MySQL索引的长度不能大于767字节, utf8 1个字存3byte, utf8mb4存4byte,相对应VARCHAR的字节数分别是255和191,所以要把索引字段的长度限制到191。

1
2
ALTER TABLE <table1> MODIFY COLUMN <col1_indexed> VARCHAR(191);
ALTER TABLE <table1> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

参考资料

  1. How to support full Unicode in MySQL databases

支持iOS9 Universal links遇到的问题

记录为iOS9上的APP支持Universal links遇到的一些问题。

  • 在Web服务器上传apple-app-site-association文件

    • 必须支持HTTPS获取配置文件
    • 文件名后不加.json后缀
    • 必须在根目录下,例如官网地址为www.site.com,那么必须通过https://www.site.com/apple-app-site-association访问到该文件
    • details为列表,列表元素中的paths是数组,且下标越小匹配优先级越高
    • paths可以使用*匹配任何字符串,?来匹配单个字符
    • appID格式为{teamId}.{bundleId}
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      {
      "applinks":{
      "apps":[],
      "details":[
      {
      "appID":"U9JEY66N6A.com.ss.iphone.article.News",
      "paths":["/m/detail/*","/"]
      },
      {
      "appID":"U9JEY66N6A.com.ss.iphone.article.Explore",
      "paths":["/m/detail/*","/"]
      },
      {
      "appID":"U9JEY66N6A.com.ss.iphone.article.NewsSocial",
      "paths":["/m/detail/*","/"]
      }
      ]
      }
      }
  • 应用增加applinks支持

  • 测试效果

    • Safari端
      可以长按链接,选择使用Web browser打开,或者使用Native APP打开,iOS会记录用户记录,下次用户点击链接,默认使用APP打开,反之,如果用户选择使用浏览器打开链接,下次点击链接默认用浏览器打开。
      所以,Safari会根据用户最近行为决定如何打开Universal Links,记住用户习惯。

    • 微信内置浏览器
      不支持长按链接选择打开方式,默认直接使用APP打开。

  • 引用

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×