关于mysql的编码问题的详解
当前位置:以往代写 > 数据库教程 >关于mysql的编码问题的详解
2019-06-14

关于mysql的编码问题的详解

关于mysql的编码问题的详解

  今天给大家普及下MySQL的编码知识,大家知道mysql的编码种类么?今天给大家讲讲对于mysql的编码问题,涉及到了多少种mysql编码的种类,以及各种mysql编码种类的特点。

关于mysql的编码问题的详解_数据库_mysql编码_课课家

      mysql编码的种类

  SHOWVBRIABLESLIKE'%character%';

关于mysql的编码问题的详解

  1)character_set_client:MySQLServer假定client传输数据过来的时候的编码

  2)character_set_connection:Server收到SQL语句时,将其转换成的编码

  3)character_set_results:Server在返回数据给客户端时,会将数据转成这个编码

  4)character_set_system:元数据编码(表名,列名等)

  5)character_set_server,character_set_database,character_set_table,character_set_column:MySQL默认的服务器/数据库/表/列编码,优先级由低到高,就是表编码可覆盖库编码,列编码可覆盖表编码

  校对集种类

关于mysql的编码问题的详解

  collation是字符的排序规则,就是字符之间比较大小的规则,例如utf8_general_ci表示的就是按照utf8编码且忽略大小写来排序,MySQL在排序时会将两个比较字符先转化为相同的编码,如果出现编码不兼容,则会抛出错误.

  关于SETNAMES和SETCHARACTERSET

  SETNAMES'ENCODING'是设置以上编码的命令,它影响的编码包括:character_set_client,character_set_connection,character_set_results,collation_connection

  SETCHARACTERSET'ENCODING'影响的编码包括:character_set_client,character_set_results

  简而言之SETNAMES会影响Server的编码和解码,而SETCHARACTERSET只会影响Server的解码

  如果说我们使用latin1打开一个连接,然后将setnamesutf8,则会出现问题,因为这会使得服务器认为客户端传入数据是utf8编码,而实际上使用的确实latin1

  所以最好的解决策略是同意所有的解码和编码规则

  下面是MySQL编码修改的方法

  编辑/etc/mysql/my.cnf

  在[client]节点下添加

  default-character-set=utf8

  在[mysqld]节点下添加

  character-set-server=utf8

  collation-server=utf8_general_ci

  重启mysql服务

  servicemysqlrestart即可

  进入mysql,查看编码

  showvariableslike”character%”;

  可以看到已经改好

关于mysql的编码问题的详解

  这就是关于mysql的编码,相信大家通过学习,对mysql的编码问题有一定的了解了吧,快快自己动手试试看。

    关键字:

在线提交作业