修改数据库mysql字符编码为UTF8-阿里云开发者社区

开发者社区> imzdx> 正文

修改数据库mysql字符编码为UTF8

简介: Mysql数据库是一个开源的数据库,应用非常广泛。以下是修改mysql数据库的字符编码的操作过程。 步骤1:查看当前的字符编码方法 mysql> show variables like'character%'; +--------------------------+-----...
+关注继续查看
Mysql数据库是一个开源的数据库,应用非常广泛。以下是修改mysql数据库的字符编码的操作过程。

步骤1:查看当前的字符编码方法

mysql> show variables like'character%';

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

|Variable_name           |Value                     |

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

|character_set_client    |latin1                    |

| character_set_connection |latin1                    |

| character_set_database   |latin1                    |

| character_set_filesystem |binary                    |

|character_set_results   |latin1                    |

|character_set_server    |latin1                    |

|character_set_system    |utf8                      |

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

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

8 rows in set (0.00 sec)

 字符编码为latin1时,用户在给数据表插入一条字符类型(char)的记录,在显示此记录时可能会无法正常显示字符类型的数据,故此处我们将mysql字符编码修改为UTF8。操作如下:

步骤2:修改my.cnf配置文件,修改后如下(/etc/my.cnf):

[client]

#password      = your_password

port           = 3306

socket         = /var/lib/mysql/mysql.sock

default-character-set=utf8     #设置默认编码为UTF8

===================================================================================================================
Mysql中文乱码问题完美解决方案

MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题 强烈建议使用utf8!!!! utf8可以兼容世界上所有字符!!!! 一、避免创建数据库及表出现中文乱码和查看编码方法 1、创建数据库的时候:CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; 2、建表的时候 CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default '', `UserID` varchar(40) NOT NULL default '', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这3个设置好了,基本就不会出问题了,即建库和建表时都使用相同的编码格式。 但是如果你已经建了库和表可以通过以下方式进行查询。 1.查看默认的编码格式: mysql> show variables like "%char%"; +--------------------------+---------------+ | Variable_name | Value | +--------------------------+---------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+-------------+ 注:以前2个来确定,可以使用set names utf8,set names gbk设置默认的编码格式;

执行SET NAMES utf8的效果等同于同时设定如下: SET character_set_client='utf8'; SET character_set_connection='utf8'; SET character_set_results='utf8';

2.查看test数据库的编码格式: mysql> show create database test; +------------+------------------------------------------------------------------------------------------------+ | Database | Create Database | +------------+------------------------------------------------------------------------------------------------+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ | +------------+------------------------------------------------------------------------------------------------+

3.查看yjdb数据库的编码格式: mysql> show create table yjdb; | yjdb | CREATE TABLE `yjdb` ( `sn` int(5) NOT NULL AUTO_INCREMENT, `type` varchar(10) NOT NULL, `brc` varchar(6) NOT NULL, `teller` int(6) NOT NULL, `telname` varchar(10) NOT NULL, `date` int(10) NOT NULL, `count` int(6) NOT NULL, `back` int(10) NOT NULL, PRIMARY KEY (`sn`), UNIQUE KEY `sn` (`sn`), UNIQUE KEY `sn_2` (`sn`) ) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |

二、避免导入数据有中文乱码的问题 1:将数据编码格式保存为utf-8 设置默认编码为utf8: set names utf8; 设置数据库db_name默认为utf8: ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 设置表tb_name默认编码为utf8: ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 导入: LOAD DATA LOCAL INFILE 'C:\\utf8.txt' INTO TABLE yjdb; 2:将数据编码格式保存为ansi(即GBK或GB2312) 设置默认编码为gbk: set names gbk; 设置数据库db_name默认编码为gbk: ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 设置表tb_name默认编码为gbk: ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 导入: LOAD DATA LOCAL INFILE 'C:\\gbk.txt' INTO TABLE yjdb;

注:1.UTF8不要导入gbk,gbk不要导入UTF8; 2.dos下不支持UTF8的显示; 三、解决网页中乱码的问题   将网站编码设为 utf-8,这样可以兼容世界上所有字符。   如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK。 1.编辑/etc/my.cnf ,在[mysql]段加入default_character_set=utf8; 2.在编写Connection URL时,加上?useUnicode=true&characterEncoding=utf-8参; 3.在网页代码中加上一个"set names utf8"或者"set names gbk"的指令,告诉MySQL连线内容都要使用 utf8或者gbk;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL---数据库从入门走向大神系列(三)-修改数据库编码/DOS窗口编码
如何查看与修改数据库的编码,如何修改dos窗口的显示编码,都在本篇详细讲解。 查看当前数据库的编码: show variables where variable_name like 'character%'; 如果出现了中文乱码,我们只要看: character_set_client —客户端的编码 character_set_connection —连接的编码(传输时的编码) character_set_results — 最后的输出编码 只要保证这三个编码是相同的,且编码集有中文,中文就不会出现乱码。
1227 0
Openstack_SQLAlchemy 修改数据库的表结构
目录 目录 前言 更改数据库的方法 为数据库添加一张或多张新表 删除一张或多张表 为旧表添加一个字段 为旧表更新一个字段 为旧表初始化一条新的记录 最后 前言 SQLAlchemy 的使用方法和相关基础内容也写过不少了, 有兴趣的小伙伴可以翻阅以往的博文, 本篇主要记录一下 SQLAlchemy 在 Openstack 中的使用规范.
1012 0
《SQL与关系数据库理论——如何编写健壮的SQL代码》》一1.4 原始模型回顾
本节书摘来华章计算机《SQL与关系数据库理论——如何编写健壮的SQL代码》一书中的第1章 ,第1.4节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
959 0
eclipse中如何修改编码格式
<p>国际通用是utf-8,但是中文系统下是gbk。为了更好的与国际接轨,推荐用utf-8格式。</p> <p>有时候导入工程,一些中文字符是乱码,或者是一些莫名其妙的错误,那么就要修改编码格式了。</p> <p>方法(假设我们要将GBK编码格式修改成UTF-8):</p> <p><span style="white-space:pre"></span>1:window-&gt;pr
825 0
+关注
imzdx
数据库相关技术专家
322
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载