zoukankan      html  css  js  c++  java
  • [MySQL]支持 emoji(字符集问题)

    问题的根源

    主要问题就是在字符集,一般解决这种问题都是靠试验。我实验了一通,得出的结论和大家分享一下(如有错误,还望指正):

    1. 数据库的字符集
    2. 数据库连接的字符集

    配置方法

    1. 设置数据库的字符集为utf8mb4:创建数据库时(注意:是数据库),指定字符集(charset)和对比算法(collate)CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;,后面再说 collate干嘛的。

    2. 设置数据库连接的字符集为utf8mb4:在建立 mysql 数据库连接时,指定字符集(charset),下面用 pyton 的 pymsql 连接数据库姿势举例:

      import pymysql
      
      params = {
              'host': '127.0.0.1',
              'port': 3306,
              'db': 'xueweihan',
              'user': 'root',
              'password': '',
              'charset': 'utf8mb4'} # set charset
      
      connection = pymysql.connect(**params)
      

    不同字符集,对比方式(collate)也不一样,所以需要指定对比的规则,utf8mb4_unicode_ci就是utf8mb4字符集对应的对比规则。比方说字符集为utf8mb4数据库,执行 sql 语句: select * from boy where name='xueweihan',就需要用指定的collate规则,来过滤数据库中的纪录。

    使用姿势

    创建数据库:
    CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    连接数据库:

    import pymysql
    
    params = {
            'host': '127.0.0.1',
            'port': 3306,
            'db': 'xueweihan',
            'user': 'root',
            'password': '',
            'charset': 'utf8mb4'} # set charset
    
    connection = pymysql.connect(**params)
    
  • 相关阅读:
    Css实现漂亮的滚动条样式
    清除浮动的方式有哪些?比较好的是哪一种?
    Cookie、sessionStorage、localStorage的区别
    http和https的区别?
    git 拉取分支切换分支
    css 三角形
    js中??和?.的意思
    js this指向
    tsconfig.json配置
    查看本地安装的所有npm包
  • 原文地址:https://www.cnblogs.com/xueweihan/p/6113600.html
Copyright © 2011-2022 走看看