返回顶部
首页 > 资讯 > 数据库 >MySQL 5.5 更改默认字符集
  • 800
分享到

MySQL 5.5 更改默认字符集

2024-04-02 19:04:59 800人浏览 安东尼
摘要

首先,Mysql的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例、单个数据库

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

一个是Character Sets,

一个是Collations,

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


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


首先,MySQL有默认的字符集,这个是安装的时候确定的,在编译MySQL的时候可以通过DEFAULT_CHARSET=

utf8和DEFAULT_COLLATION=utf8_general_ci这两个参数(MySQL5.5版本,5.1版本用--with-charset=

utf8 --with-collation=utf8_general_ci)来指定默认的字符集为utf8,这也是最一劳永逸的办法,这样指定后,

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


但是遗憾的是,很多人编译安装MySQL的时候没有指定这两个参数,大多数人更是通过二进制程序的方式安装,那么这时候MySQL的默认字符集是latin1。而这时候我们仍然可以指定MySQL的默认字符集,通过my.cnf文件增加

两个参数:

1.在[mysqld]下添加

default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)
2.在[client]下添加
default-character-set=utf8


这样我们建数据库建表的时候就不用特别指定utf8的字符集了。配置文件里的这种写法解决了数据存储和比较的问题,但是对客户端的连接是没有作用的,客户端这时候一般需要指定utf8方式连接才能避免乱码。也就是传说总的setnames命令。事实上,set names utf8命令对应的是服务器端以下几个命令:

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = xutf8;

但这三个参数是不能写在配置文件my.cnf里的。只能通过set命令来动态修改。我们需要的是在配置文件里写好一劳

永逸的办法。那么这时候,是否有在服务端解决问题的办法呢,可行的思路是在init_connect里设置。这个命令在每个普通用户连接上来的时候都会触发执行,可以在[mysqld]部分增加以下一行设置连接字符集:

在[mysqld]下添加:

init_connect = 'SET NAMES utf8'

这样就简单的解决了问题,但是要注意的是,这个命令对具有super权限的用户是不生效的,可以简单的测试如下:


[root@localhost init.d]# mysql -u root -p

Enter passWord:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 6

Server version: 5.1.49-log MySQL CommUnity Server (GPL)

Copyright (c) 2000, 2010, oracle and/or its affiliates. All rights reserved.

This software comes with ABSOLUTELY NO WARRANTY. This is free software,

and you are welcome to modify and Redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like '%collation%';

+----------------------+-------------------+

| Variable_name        | Value             |

+----------------------+-------------------+

| collation_connection | latin1_swedish_ci |

| collation_database   | utf8_general_ci   |

| collation_server     | utf8_general_ci   |

+----------------------+-------------------+

3 rows in set (0.00 sec)

mysql> show variables like '%character%';

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

| character_set_client     | latin1                     |

| character_set_connection | latin1                     |

| character_set_database   | utf8                       |

| character_set_filesystem | binary                     |

| character_set_results    | latin1                     |

| character_set_server     | utf8                       |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00 sec)

我们看到root用户看到的connection相关参数仍然是latin1,而普通用户看到的却是utf8。

实际上,对于mysql,mysqladmin, mysqlcheck, mysqlimport和mysqlshow这些客户端命令程序,可以设置以下参数在配置文件的

[client]部分,为这些程序指定默认用utf8编码和连接:

default-character-set = utf8

网上很多资料(包括一些大公司的所谓牛人)说加上这一行就能彻底解决乱码问题,这是不正确的,这个参数只对以上几个官方的客户端程序有用,对普通的第三方程序,比如PHP代码是无效的。

当然,这个参数可以方便DBA的管理,还是很有用的,而这个参数也能解释为什么DBA看到的内容和普通用户看到的内容有时会有差异。

除了数据库的存储,连接数据库的方式,还有就是程序本身的编码也要是utf8方式来保存,当然这与MySQL数据库已经无关了,而是客户端显示的问题。


总结一下就是:

1、首选在编译安装MySQL的时候指定两个参数使用utf8编码。

2、次选在配置文件my.cnf设定两个参数,同时设置init_connect参数。

3、第三在配置文件my.cnf设定两个参数,同时客户端的连接指定set names命令。

4、在配置文件my.cnf里加入default-character-set参数方便管理。


您可能感兴趣的文档:

--结束END--

本文标题: MySQL 5.5 更改默认字符集

本文链接: https://lsjlt.com/news/42040.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL 5.5 更改默认字符集
    首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例、单个数据库...
    99+
    2024-04-02
  • mysql中怎么更改默认字符集
    本篇文章给大家分享的是有关mysql中怎么更改默认字符集,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。启动mysql后,以root登录mysq...
    99+
    2024-04-02
  • mysql如何通过my.ini更改默认字符集
    目录通过my.ini更改默认字符集mysql5.6修改完my.ini字符集失效解决办法总结通过my.ini更改默认字符集 这里通过my.ini文件来设置默认字符集 打开 my.ini 在 [mysqld] 下面写上 c...
    99+
    2022-12-26
    mysqlmy.ini my.ini更改默认字符集 mysql更改默认字符集
  • MySQL更改默认字符集为utf-8的全过程
    目录mysql更改默认字符集为utf-8第一步第二步第三步第四步(最关键步骤)总结MySQL更改默认字符集为utf-8 第一步 如果已经启动mysql服务端,需要在后台进程或者通过net stop MySQL版本号,关闭...
    99+
    2022-12-26
    MySQL更改默认字符集 MySQL更改字符集为utf-8 MySQL更改字符集utf-8
  • mysql的默认字符集怎么修改
    MySQL的默认字符集可以通过以下两种方法进行修改:1. 修改配置文件:打开MySQL的配置文件(通常是my.cnf或my.ini)...
    99+
    2023-09-27
    mysql
  • 修改mysql默认字符集的方法
    要修改MySQL的默认字符集,可以采取以下方法:1. 在MySQL配置文件中修改:- 打开MySQL的配置文件(通常是my.cnf或...
    99+
    2023-09-22
    MySQL
  • 怎么修改mysql的默认字符集
    要修改MySQL的默认字符集,您可以按照以下步骤进行操作:1. 打开MySQL的配置文件my.cnf。在Windows上,该文件通常...
    99+
    2023-09-25
    mysql
  • 将sybase的字符集改回默认的字符集
    查看客户端字符集:在isql环境中执行:1> select @@client_csname2> go修改服务端字符集方法:假设sybase安装目录为$sybase$◆1.转到$syba...
    99+
    2024-04-02
  • MySQL修改默认引擎和字符集详情
    目录一、数据库引擎1.1 查看数据库引擎1.2 修改默认数据库引擎二、数据库字符集2.1 查看字符集 2.2 修改字符集一、数据库引擎 1.1 查看数据库引擎 mysql>...
    99+
    2024-04-02
  • 修改mysql默认字符集的两种方法
    下面微点阅读小编就为大家介绍两种修改mysql默认字符集的方法。需要的朋友可以过来参考下 (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值, 如 default-character-set = utf8    ...
    99+
    2023-09-16
    mysql adb android
  • 设定mysql的默认字符集
    mysql> show global variables like '%charac%';    --查看当前mysql采用的字符集mysql>show global var...
    99+
    2024-04-02
  • mysql默认字符集是哪个
    本篇内容介绍了“mysql默认字符集是哪个”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-05-25
    mysql
  • MySql修改默认字符编码
    windows下 在命令行下,查看当前数据库编码 show variables like "%char%"; mysql> show variables like "%char%"; +-------------------------...
    99+
    2018-03-18
    MySql修改默认字符编码
  • MAC下如何修改mysql默认字符集为utf8
    小编给大家分享一下MAC下如何修改mysql默认字符集为utf8,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1,检查默认安装的mysql的字符集mysql> show variab...
    99+
    2024-04-02
  • MySQL默认字符集设置详情
    目录查看各版本默认字符集修改mysql5中的默认字符集已有库&表字符集的变更各级别的字符集字符集与比较规则utf8 与 utf8mb4比较规则请求到响应过程中字符集的变化SQL大小写规范Windows和linux...
    99+
    2024-04-02
  • MacOS中Mysql设置默认字符集
    一、查看字符集mysql> show variables like 'character%';+--------------------------+-------------------------...
    99+
    2024-04-02
  • MySQL 不同版本默认字符集
    MySQL 不同版本默认字符集   一、       MySQL 5.6 默认字符集 备注: 默认是 utf...
    99+
    2024-04-02
  • mysql如何设置默认字符集
    在MySQL中,可以通过以下方式设置默认字符集:1. 通过配置文件设置:在MySQL的配置文件中(通常是my.cnf或my.ini)...
    99+
    2023-10-20
    mysql
  • MySQL各个版本的默认字符集
    1、MySQL 5.6默认字符集2、MySQL 5.7默认字符集3、MySQL 8.0默认字符集 ...
    99+
    2024-04-02
  • MYSQL查看默认字符集的命令
    这篇文章主要介绍“MYSQL查看默认字符集的命令”,在日常操作中,相信很多人在MYSQL查看默认字符集的命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL查看默认字...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作