原文:http://blog.csdn.net/yjz_sdau/article/details/52135050

(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,

如 default-character-set = utf8 
character_set_server = utf8

修改完后,重启mysql的服务,service mysql restart

使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8

(2) 还有一种修改mysql默认字符集的方法,就是使用mysql的命令

1、修改数据库字符编码

mysql> alter database mydb character set utf8 ;

2、创建数据库时,指定数据库的字符编码

mysql> create database mydb character set utf8 ;

3、查看mysql数据库的字符编码

mysql> show variables like 'character%'; //查询当前mysql数据库的所有属性的字符编码

+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

4、修改mysql数据库的字符编码

修改字符编码必须要修改mysql的配置文件my.cnf,然后重启才能生效

通常需要修改my.cnf的如下几个地方:

【client】下面,加上default-character-set=utf8,或者character_set_client=utf8

【mysqld】下面,加上character_set_server = utf8 ;

因为以上配置,mysql默认是latin1,如果仅仅是通过命令行客户端,mysql重启之后就不起作用了。

如下是客户端命令行修改方式,不推荐使用

mysql> set character_set_client=utf8 ;

mysql> set character_set_connection=utf8 ;

mysql> set character_set_database=utf8 ;

mysql> set character_set_database=utf8 ;

mysql> set character_set_results=utf8 ;

mysql> set character_set_server=utf8 ;

mysql> set character_set_system=utf8 ;

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| 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       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

http://m.blog.chinaunix.net/uid-20639775-id-154602.html

如果在应用开始阶段没有正确的设置字符集,在运行一段时间以后才发现 存在不能满足要求需要调整,

又不想丢弃这段时间的数据,那么就需要进行字符集的修改。 字符集的修改不能直接通过 alter

dataabase character set *** 或者 alter table tablename character set ***; 命令进行,这两个

命令都没有更新已有记录的字符集, 而只是对新创建的表或者记录生效。
已有的记录的字符集调整,需要先将数据导出,经过适当的调整重新导入后才可完成。

以下模拟的是将latin1字符集的数据库修改成GBK字符集的数据库的过程。

1> 导出表结构:
mysqldump -uroot -p --default-character-set=gbk -d databasename > createtab.sql

其中 --default-character-set=gbk 表示设置以什么字符集连接, -d 表示只导出表结构,不导出数

据。

2>手工修改 createtab.sql 中表结构定义中的字符集为新的字符集。

3>确保记录不再更新,导出所有记录。

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-

set=latin1 databasename > data.sql

--quick: 该选项用于转储大的表。 它强制 mysqldump 从服务器一次一行地检索表中的行而不是 检

索所有行,并在输出前将它缓存到内存中。

--extended-insert: 使用包括几个 values 列表的多行insert语法,这样使转储文件更小,重载文件时

可以加速插入。

--no-create-info: 不写重新创建每个转储表的create table 语句。

--default-character-set=latin1: 按照原有的字符集导出所有数据,这样导出的文件中,所有中文都是

可见的,不会保存成乱码。

4>打开data.sql,将 set names latin1 修改成 set names gbk 。

5>使用新的字符集创建新的数据库。

create database databasename default charset gbk;

6>创建表,执行 createtab.sql

mysql -uroot -p databasename < createtab.sql

7>导入数据,执行data.sql

mysql -uroot -p databasename < data.sql

注意:选择字符集的时候,要注意最好是源字符的超级,或者确定比源字符集的字库更大,否则如果目标

字符集的字库小于源字符集的字库,那么目标字符集中不支持的字符倒入后会变成乱码,丢失一部分数据。 例如 GBK字符集的字库大于GB2312字符集,那么GBK字符集的数据,如果导入GB2312数据库中,就会丢失GB2312中不支持的那部分汉字的数据。

(转)如何修改windows下mysql的字符集的更多相关文章

  1. 修改windows下mysql的max_allowed_packet的值

    执行sql报错:Error updating database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is to ...

  2. Windows下MySQL数据目录修改

    最近在弄一个项目,需要修改windows下面的mysql的数据目录(mysql默认是存储在C盘的,这个不太好,未来一定会满了的). 我的 mysql 是安装版,版本是 5.7. 1.首先,需要知道my ...

  3. 【已解决】Windows下 MySQL大小写敏感 解决方案及分析

    Windows下 MySQL大小写敏感配置 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window ...

  4. Windows 下 MySql 5.7.20安装及data和my.ini文件的配置(转)

    Windows 下 MySql 5.7.20安装及data和my.ini文件的配置     本文通过图文并茂的形式给大家介绍了MySql 5.7.20安装及data和my.ini文件的配置方法. my ...

  5. Windows 下MySQL zip 安装

    主要步骤: 1.下载解压到安装的文件夹 2.配置环境路径 3.配置my.ini文件,设置程序路径和数据存储路径 4.以管理员身份启动Mysqld install(提示sevice安装成功) 5.启动M ...

  6. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  7. Windows下mysql自动备份的最佳方案

    网上有很多关于window下Mysql自动备份的方法,其实不乏一些不好的地方和问题,现总结出一个最好的方法供大家参考: 新建一个记事本,然后重命名为: mysql_backup.bat 然后单击右键选 ...

  8. Windows下mysql忘记密码的解决方法

    Windows下mysql忘记密码的解决方法 mysql5.0 http://www.jb51.net/article/21984.htm方法一: 1.在DOS窗口下输入 net stop mysql ...

  9. Windows下MYSQL自动备份批处理

    windows下MYSQL自动备份批处理 2011-05-04 09:16:45|  分类: mysql|举报|字号 订阅     按系统时间进行备份 注意mysql安装路径中如果有空格.就要把,.b ...

随机推荐

  1. ansible-playbook api 2.0 运行项目

    上篇 api 的文章 <ansible-playbook api 2.0 直接运行> 介绍的是直接将 tasks 直接写在 代码中的,本文介绍 api 运行整个项目 [root@10_1_ ...

  2. 图形与游戏中3D数学基础的说明

    1.左手坐标系与右手坐标系没有好坏之分,不同的研究领域和不同的背景下,选择不同的坐标系:传统计算机图形学采用“左手坐标系”,线性代数则倾向于使用右手坐标系 坐标系由坐标轴与坐标原点组成.原点定义坐标系 ...

  3. hdu 5001 从任意点出发任意走d步不经过某点概率

    http://acm.hdu.edu.cn/showproblem.php?pid=5001 给定n个点m条边的无向图问从任意点出发任意走d步,从不经过某个点的概率 本想先算路过每个点的概率然后用1减 ...

  4. 『IOS』 遇到问题记录(长期更新)

    遇到的很多问题,解决后都是自己记着,以为不会忘记,之后却会想不起来了. 所以把今后解决的问题记录在这. 一. 在二级页面设置了CAlayer的代理,在返回一级页面报错: EXC_BAD_ACCESS( ...

  5. linux几种查看日志的方法

    linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档 ...

  6. Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付)

    http://www.cnblogs.com/devinlee/p/4565933.html Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付) 关注作者 ...

  7. redis 任务队列

    使用Redis实现任务队列 说到队列很自然就能想到Redis的列表类型,3.4.2节介绍了使用LPUSH和RPOP命令实现队列的概念.如果要实现任务队列,只需要让生产者将任务使用LPUSH命令加入到某 ...

  8. 避免图片路径访问405,可以用图片控件来显示局部相对路径,不需要域名就不会出现jpg静态资源访问错误

    <asp:Image ID="Image1" runat="server"/> protected void Page_Load(object se ...

  9. TCP实现一个简易的聊天室 (Unity&&C#完成)

    效果展示 TCP Transmission Control Protocol 传输控制协议 TCP是面向连接的流模式(俗称:网络流).即传输数据之前源端和终端建立可靠的连接,保证数据传输的正确性. 流 ...

  10. 如何在 .NET Core 上测试库

    设置解决方案. 可使用以下命令实现此目的: mkdir SolutionWithSrcAndTest cd SolutionWithSrcAndTest dotnet new sln dotnet n ...