`

MySQL 字符集设置

阅读更多
通常在安装完MySQL后,我们需要对MySQL字符集进行相关设置。
我们以Linux(Ubuntu)环境描述具体操作,Unux与其基本一致,Windows路径配置上少有不同。

我们将讨论以下几个问题:
  1. 字符集问题表征
  2. 修正配置,设置默认字符集编码
  3. 在使用过程中强制设置字符集编码


1.字符集问题表征

MySQL默认latin1(其实就是ISO-8859-1)字符集。这显然不能满足我们的需要,因此我们把它调整为UTF8字符集,以兼容大多数字符集。

我们先来执行两条SQL,来检测下当前的MySQL默认字符集编码:
show variables like "%colla%"; 



show variables like "%char%"; 




latin1字符集将给我们带来很多麻烦,我们需要将其调整为UTF-8

2.修正配置,设置默认字符集编码

这里,我们需要修改MySQL配置文件my.cnf文件,Windows环境则是my.ini文件。
通常在linux环境下my.cnf文件位于/etc/mysql路径下,但由于安装版本或是系统环境的不同,我们可能无法在这个目录中找到该文件。MySQL将自动加载位于/etc下的my.cnf文件。当然,该文件可能并不存在,我们则需要手动创建它!

引用
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf


修改/etc/mysql/my.cnf文件:
echo 修改my.cnf文件
sudo vi /etc/mysql/my.cnf

输入/mysqld,找到 [mysqld],键入i 在末尾加上以下内容:

引用
#Set the default character set.
default-character-set=UTF8


键入ctrl+c终止输入,键入/client,找到[client] 在末尾加上以下内容:

引用
#Set the default character set.
default-character-set=UTF8




键入ctrl+c终止输入,键入:wq保存退出。

如果当前文件不存在(解压缩版,或Mac安装版),则需要创建/etc/my.cnf文件。该文件将作为MySQL环境全局配置:
echo 创建my.cnf
sudo vi /etc/my.cnf

将下述内容写到该文件中:
引用

[mysqld]
#Set the default character set.
default-character-set=UTF8

[client]
#Set the default character set.
default-character-set=UTF8




重启MySQL
sudo /etc/init.d/mysql restart

执行这两段SQL检测字符集设置:
show variables like "%colla%"; 



show variables like "%char%"; 



3.在使用过程中强制设置字符集编码
为确保字符集完全统一,在建表、建库的时候要强制设定统一字符集。
另外通过JDBC连接MySQL的时候为确保万无一失,连接字符串需要加上以下参数:
jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8

useUnicode=true&characterEncoding=UTF-8强制使用UTF8作为会话字符集编码。

当我们通过命令方式访问MySQL时,似乎就没有那么幸运了!尤其是遇到遗留系统数据库,一时半会不能改动字符集编码。 这个时候,执行SQL,在屏幕上就只能看到一堆乱码了!杯具了!

不过不要紧,我们可以在登录时指定会话级别的默认字符集(--default-character-set=utf8):
mysql -u root -p --default-character-set=utf8

也算是一个折中的办法!


  • 大小: 18.5 KB
  • 大小: 24.6 KB
  • 大小: 19.1 KB
  • 大小: 25.5 KB
  • 大小: 43.6 KB
  • 大小: 13.3 KB
6
0
分享到:
评论
5 楼 snowolf 2011-05-10  
xutao5641745 写道
楼主,,我用的Windows service 2003  mysql 5.0  然后按照你的设置后,我必须在连接的时候指定  mysql -u root -p --default-character-set=GBK  这种编码,否则显示的时候是乱码。。请问这是为什么?我用第三方工具sqlyog enterprise  连接时,也只能指定gbk或者gb2312否则用select * from 表的时候,显示的也是乱码,请问这是为什么?是我哪里设置错误了么?

请看我的设置:
show variables like '%character%' ;
显示

character_set_client    utf8
character_set_connection    utf8
character_set_database    utf8
character_set_filesystem    binary
character_set_results    utf8
character_set_server    utf8
character_set_system    utf8
character_sets_dir    C:\\Program Files\\MySQL\\MySQL Server 5.0\\share\\charsets\\


show variables like '%colla%';:
显示

collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci

因为你本地的工具是GBK,因为你在windows下操作。我这个是标准的Linux配置。
4 楼 xutao5641745 2011-05-10  
楼主,,我用的Windows service 2003  mysql 5.0  然后按照你的设置后,我必须在连接的时候指定  mysql -u root -p --default-character-set=GBK  这种编码,否则显示的时候是乱码。。请问这是为什么?我用第三方工具sqlyog enterprise  连接时,也只能指定gbk或者gb2312否则用select * from 表的时候,显示的也是乱码,请问这是为什么?是我哪里设置错误了么?

请看我的设置:
show variables like '%character%' ;
显示

character_set_client    utf8
character_set_connection    utf8
character_set_database    utf8
character_set_filesystem    binary
character_set_results    utf8
character_set_server    utf8
character_set_system    utf8
character_sets_dir    C:\\Program Files\\MySQL\\MySQL Server 5.0\\share\\charsets\\


show variables like '%colla%';:
显示

collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci

3 楼 xutao5641745 2011-05-10  
楼主,,,建议你多发一些关于mysql 的文章,这样我就有目标了。。。
2 楼 snowolf 2010-03-20  
jyllook6 写道
楼主啊 !!麻烦你总结清楚点!!!!特别是视图,存储过程,存储函数,触发器.......这些啊,早点,,,
呵呵! 只是提点建议!!!!!!!!!!!!!!

呵呵,刚把书出了。还没顾上整理其他内容。别急,我对MySQL情有独钟。慢慢来~
1 楼 jyllook6 2010-03-20  
楼主啊 !!麻烦你总结清楚点!!!!特别是视图,存储过程,存储函数,触发器.......这些啊,早点,,,
呵呵! 只是提点建议!!!!!!!!!!!!!!

相关推荐

    mysql字符集设置

    MySQL字符集设置是数据库管理中的一个重要环节,尤其是在处理多语言数据或者有特殊字符需求的应用中。字符集决定了数据库、表以及字段如何存储和显示字符,影响到数据的正确性及兼容性。以下将详细讲解MySQL字符集的...

    Mysql字符集设置原理及常见问题解决

    MySQL字符集设置原理及其常见问题解决是数据库管理中不可或缺的一部分,尤其对于处理多语言或特殊字符的数据时,正确的字符集配置至关重要。字符集定义了数据库、表和字段能存储的字符范围,它决定了数据的编码和...

    带你5分钟读懂MySQL字符集设置

    MySQL字符集和字符序是数据库管理系统中至关重要的概念,它们决定了数据如何被编码和比较。字符集是指一组特定的字符及其对应的编码,而字符序则是规定字符比较的规则。理解并正确设置这两个参数对于避免“乱码”...

    设置mysql字符集

    当遇到数据乱码的情况时,首先应检查数据库、表、字段的字符集设置是否一致,并且与服务器及客户端的字符集相匹配。如果发现不一致,可能需要更新表结构或导入数据时的字符集,以保证数据的一致性和正确性。 例如,...

    Mysql字符集设置原理及常见问题解决.pdf

    mysql遇到字符集问题的常见解决方法,给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数 值就是字符的编码 (Encoding) 。例如,我们给字符 'A'赋予数值 0,给字符 'B'赋予数 值 1,则 0 ...

    深入Mysql字符集设置分析

    MySQL字符集设置是数据库管理中一个至关重要的环节,它涉及到数据的存储、比较和检索。本文将深入探讨MySQL字符集的基本概念,字符集设置,以及常见的问题与解决方案。 首先,我们要理解字符集和字符序的基本概念。...

    mysql字符集查看以及修改

    重启 MySQL 服务后,可以使用以下命令查看字符集设置: mysql> show variables like 'collation_%'; mysql> show variables like 'character_set_%'; 这将显示当前 MySQL 数据库的字符集信息。 总结 MySQL 字符...

    设定mysql字符集解决终端乱码

    - 若要永久改变字符集设置,可以在 MySQL 配置文件(通常是 `my.cnf` 或 `my.ini`)中进行设置。具体步骤如下: 1. 打开配置文件,在 `[mysqld]` 段落下添加以下行: ```ini [mysqld] character-set-server=utf...

    mysql字符集转换

    ### MySQL字符集转换详解 #### 一、引言 在MySQL数据库管理中,字符集的正确设置至关重要。它直接影响到数据的存储与检索效果,尤其是对于包含多种语言文本的应用场景而言。本文将围绕“MySQL字符集转换”这一主题...

    mysql字符集等常用命令

    ### MySQL字符集设置与解决UTF-8乱码问题 在MySQL数据库中,字符集的设置对于数据的正确存储和检索至关重要。特别是在使用UTF-8字符集时,如果配置不当很容易出现乱码问题。本文将详细介绍如何通过MySQL命令来正确...

    linux修改mysql字符集

    ` 命令来查询 MySQL 的字符集设置。 在 MySQL 中,有多个变量可以影响 MySQL 的性能。下面我们将介绍一些重要的变量: 1. back_log:该变量指定了 MySQL 能够处理的连接数量。增加该值可以提高 MySQL 的并发处理...

    查看和设置MySQL数据库字符集[归纳].pdf

    #### 三、查看MySQL字符集设置 在MySQL中,可以通过查询`SHOW VARIABLES`来查看当前数据库或连接的字符集设置情况: ```sql SHOW VARIABLES LIKE '%character%'; ``` 此命令会返回以下几项重要的设置: - `...

    精通MySQL字符集与校对集

    ### 精通MySQL字符集与校对集 在MySQL中,正确地管理和配置字符集与校对集对于确保数据的正确性和一致性至关重要。字符集主要用于定义如何存储和表示文本数据,而校对集则定义了如何比较这些文本数据。本篇文章将...

    linux下设置mysql字符集为UTF-8以及mysql重启.docx

    总结一下,设置Linux下MySQL字符集为UTF-8主要包含以下几个步骤: 1. 找到`my.cnf`配置文件。 2. 在`[mysqld]`段落下添加UTF-8相关配置。 3. 保存并关闭配置文件。 4. 重启MySQL服务,使配置生效。 通过这些操作,...

    深入Mysql字符集设置[精华结合]

    MySQL字符集设置是数据库管理中的一个重要环节,它涉及到数据的存储、检索和比较。字符集定义了字符的编码方式,而字符序则规定了字符之间的比较规则。在MySQL中,字符集和字符序的选择对数据库的多语言支持、数据...

    关于MySQL字符集查看与修改

    ### 关于MySQL字符集查看与修改 #### MySQL的字符集支持概述 MySQL的字符集支持主要涉及两个方面:**字符集(Character set)**和**排序方式(Collation)**。字符集定义了如何存储和表示不同的字符,而排序方式则...

    MYSQL修改字符集默认问题

    ### 一、理解MySQL字符集 在深入探讨修改字符集的方法之前,我们首先需要了解MySQL中的字符集概念。字符集是指一系列字符及其编码方式的集合。在MySQL中,常用的字符集有`latin1`、`utf8`等。其中: - **`latin1`*...

    MYSQL字符集乱码的解决

    ### MySQL字符集乱码问题及解决方案 #### 一、问题背景 在使用MySQL数据库时,很多用户会遇到中文字符显示为乱码的情况。这通常是因为MySQL数据库中的字符集设置不一致导致的。例如,在命令行下操作MySQL时,可能会...

    查看mysql字符集MySQL 乱码的根源是的 MySQL 字符

    查看mysql字符集MySQL 乱码的根源是的 MySQL 字符

    mysql字符集和校对集

    ### MySQL字符集与校对集详解 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,在处理各种语言环境下的数据时,字符集和校对集的正确配置至关重要。本文旨在深入探讨MySQL中的字符集(Character ...

Global site tag (gtag.js) - Google Analytics