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权限的用户是不生效的。

mysql 更改默认字符集的更多相关文章

  1. 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!

    在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...

  2. MacOS中Mysql设置默认字符集

    一.查看字符集 mysql> show variables like 'character%'; +--------------------------+-------------------- ...

  3. 为 MySQL 设置默认字符集(UTF-8)避免产生乱码

    环境:Windows 7+Wamp Server+MySQL 5.7.9 查看MySQL默认编码: SHOW VARIABLES LIKE 'character%' character_set_cli ...

  4. MySQL修改默认字符集

    今天朋友在做某个程序项目时,需要修改MySQL修改默认字符集,搞不好找我帮忙.百度了试了好几篇博文中的方法,最后终于成功了.但是感觉那些博文思路有点乱,所以自己总结下,希望可以帮到遇到同样问题的人. ...

  5. mysql更改默认存储引擎

    在mysql的官网上看到在mysql5.5以上的版本中已经更改了默认的存储引擎,在5.5版本以前是Myisam以后是Innodb. InnoDB as the Default MySQL Storag ...

  6. mac下修改mysql的默认字符集为utf8

    1,检查默认安装的mysql的字符集 mysql> show variables like '%char%'; +--------------------------+------------- ...

  7. 【数据库】Mysql更改默认引擎为Innodb的步骤方法

    前言 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定. 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.M ...

  8. mysql 更改默认数据目录

    http://www.cnblogs.com/chenny7/p/3642363.html 本文主要介绍在CentOS下通过yum命令安装MySQL之后,如何移动默认数据目录到指定位置. 安装mysq ...

  9. 修改mysql的默认字符集

    \s 查看mysql的字符集 把server characterset和db characterset修改成utf8 在my.ini的mysqld下面添加两行代码,重启mysql [mysql] de ...

随机推荐

  1. 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(四)

    作者:Geppetto 前面我们介绍了特征选择(Feature Selection,FS)与离散化数据的重要性,介绍了PSO在FS中的重要性和一些常用的方法.FS与离散化的背景,介绍了EPSO与PPS ...

  2. coding++:高并发解决方案限流技术-使用RateLimiter实现令牌桶限流-Demo

    RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率. 通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位时 ...

  3. swagger2 接口文档

    1,maven: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...

  4. Redis在linux环境下的安装

    下载Redis安装包 wget http://download.redis.io/releases/redis-3.2.9.tar.gz 解压Redis安装包 tar -zxvf redis-3.2. ...

  5. 2019NYIST计科第四次周赛

    YZJ的牛肉干 Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做 YZJ的大佬,在共同的集训生活中,大家建立了深厚的友谊, YZJ准备做点什么来纪念这段激情燃烧 ...

  6. 记录一次简单的springboot发送邮件功能

    场景:经常在我们系统中有通过邮件功能找回密码,或者发送生日祝福等功能,今天记录下springboot发送邮件的简单功能 1.引入maven <!-- 邮件开发--><dependen ...

  7. js 中对于this 的理解的 经典案例

    function Foo(){ getName = function(){console.log(1);}; return this; }Foo.getName = function(){consol ...

  8. 1047 Student List for Course (25分)

    Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course ...

  9. 1005 Spell It Right (20 分)

    Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output e ...

  10. .NET Core 3.1 的REST 和gRPC 性能测试

    看到越南小哥 的github 上的Evaluating Performance of REST vs. gRPC , 使用的是.NET Core 3.0 , 今天我把它升级到.NET Core 3.1 ...