zoukankan      html  css  js  c++  java
  • mysql 更改默认字符集

    mysql 默认字符集概述

    首先,MySQL的字符集问题主要是两个概念:

    • haracter Sets
    • Collations

    前者是字符内容及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例单个数据库等四个级别指定。

    对于使用者来说,一般推荐使用utf8编码来存储数据。而要解决乱码问题,不单单是MySQL数据的存储,还和用户程序文件的编码方式、用户程序和MySQL数据库的连接方式都有关系。

    服务端

    编译安装Mysql时可以指定默认字符集 -- 将编码问题扼杀在摇篮里

    MySQL有默认的字符集,这个是安装的时候确定的,在编译MySQL的时候可以通过这两个参数来指定默认的字符集为utf8
    在MySQL5.5版本中

    DEFAULT_CHARSET=utf8
    DEFAULT_COLLATION=utf8_general_ci
    

    在mysql5.1版本中

    --with-charset=utf8
    --with-collation=utf8_general_ci
    

    这样指定后,客户端连接到数据库的编码方式也默认是utf8了,应用程序不需要任何处理。

    二进制安装后修改默认字符集 -- 补救行动

    通过二进制程序的方式安装,那么这时候MySQL的默认字符集是latin1,可以修改my.cnf文件中参数,改变默认字符集。
    首先,解决数据存储和比较的问题,但是对客户端的连接是没有作用的。

    1. 在[mysqld]下添加
      mysql 5.5 版本
    character-set-server=utf8
    

    mysql 5.1 版本

    default-character-set=utf8
    
    1. [client]下添加
    default-character-set=utf8
    

    这样建数据库建表的时候的默认字符集就是utf8

    客户端

    客户端登录时需要设置这几个参数,但这三个参数是不能写在配置文件my.cnf里,只能通过set命令来动态修改

    SET character_set_client = utf8
    SET character_set_results = utf8
    SET character_set_connection = utf8
    

    init_connect命令在每个普通用户连接上来的时候都会触发执行,可以在[mysqld]部分增加以下一行设置连接字符集:
    [mysqld]下添加:

    init_connect = 'SET NAMES utf8'
    

    但是要注意的是,这个命令对具有super权限的用户是不生效的。

  • 相关阅读:
    PowerShell笔记
    Windows难民安装docker的注意事项
    minix3使用轻快入门
    gentoo(贱兔) Linux作业系统的基本使用
    Artix Linux作业系统的使用~
    CentOS7搭建sftp
    Hello Wolrd
    Android开发技术周报 Issue#1
    Android开发技术周报 Issue#4
    Android开发技术周报 Issue#3
  • 原文地址:https://www.cnblogs.com/hiyang/p/12631769.html
Copyright © 2011-2022 走看看