如何通过命令修改mysqlmysql设置数据库编码默认编码为gb2312

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&MySql修改数据库编码为UTF8避免造成乱码问题
字体:[ ] 类型:转载 时间:
mysql 创建数据库时指定编码很重要,很多开发者都使用了默认编码,乱码问题可是防不胜防,下面与大家分享下通过修改数据库默认编码方式为UTF8来减少数据库创建时的设置,避免因粗心造成的乱码问题
mysql 创建数据库时指定编码很重要,很多开发者都使用了默认编码,乱码问题可是防不胜防。制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题。 网页数据一般采用UTF8编码,而数据库默认为latin 。我们可以通过修改数据库默认编码方式为UTF8来减少数据库创建时的设置,也能最大限度的避免因粗心造成的乱码问题。我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来 我们可以通过命令查看数据库当前编码: mysql& SHOW VARIABLES LIKE 'character%'; 发现很多对应的都是 latin1,我们的目标就是在下次使用此命令时latin1能被UTF8取代。第一阶段: mysql设置编码命令
代码如下: SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8;
然后 mysql& SHOW VARIABLES LIKE 'character%'; 你可以看到全变为 utf8 。 但是,这只是一种假象 此种方式只在当前状态下有效,当重启数据库服务后失效。 所以如果想要不出现乱码只有修改my.ini文件, 从my.ini下手(标签下没有的添加,有的修改) [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 以上3个section都要加default-character-set=utf8,平时我们可能只加了mysqld一项。 然后重启mysql,执行 mysql& SHOW VARIABLES LIKE 'character%'; 确保所有的Value项都是utf8即可。 但是可恶的事情又来了, |character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 注意 该配置| character_set_server | latin1 无法设置成UTF8 交互时候仍然会出现乱码。 第二阶段:找到下面这东东 X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe 重新启动设置,将默认编码设置为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 | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set 另外注意事项: 1、建表时加utf8,表字段的Collation可加可不加,不加时默认是utf8_general_ci了。
代码如下: CREATE TABLE `tablename4` ( `id` int(11) NOT NULL AUTO_INCREMENT, `varchar1` varchar(255) DEFAULT NULL, `varbinary1` varbinary(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
2、网页xxx.php/jsp保存时选择utf8编码,页头最好加上 header('conten-type:text/charset=utf-8'); 在执行CRUD操作前先执行一下 mysql_query("set names utf8"); ------------------------- 连接数据库设置编码 jdbc:mysql://地址:3306/数据库名?characterEncoding=utf8 ------------------------- java中的常用编码UTF-8;GBK;GB2312;ISO-8859-1; 对应mysql数据库中的编码utf8;gb2312;latin1
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具您所在的位置: &
MySQL数据库导入或导出时字符编码集的设置方法
MySQL数据库导入或导出时字符编码集的设置方法
chengcongjun
本文主要介绍了导入或导出MySQL数据库时通过设置字符编码集来避免有可能出现的一些乱码现象的发生,希望能够对您有所帮助。
MySQL数据库中如果在建立数据库的时候没有选择字符编码集gb2312或者utf或者gbk,就有可能会出现一些乱码的现象。本文主要介绍一下设置字符编码集得方法,设置字符编码集得方法如下:
解决方法:
开始--&运行--&cmd&--&进入dos命令窗体:(如果命令无法执行,请将mysql的安装路径放到系统变量path的最前面)
mysql导出命令:
mysqldump&-hlocalhost&-P3306&-uroot&&-p123456&--default-character-set=gb2312&mysqlF:/pushingdb.sql&
mysql导入命令:
mysql&&-uroot&-p123456&--default-character-set=gb2312&test/pushingdb.sql&
注:root表示数据库用户名,123456表示数据库密码,mysql表示数据库名称,F:/pushingdb.sql表示导出到本地的位置;
这样,经过上面的设置,就可以避免MySQL数据库中一些乱码现象的发生了。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
MySQL数据库的配置工作,一般都是利用相关工具来进行。本专题将
数据库产品
数据库综合
数据库新闻
维基百科将切换到另外一款开源数据库MariaDB
MySQL 5.6.10已经发布,Oracle将其称之为MySQL 5.6正
51CTO将为您整理数据清洗方面的技术文章和相关资料,
这个专题系统地介绍和分析比较了业界主流的Yahoo! S4
本书全面介绍了Ubuntu Linux的相关知识,内容详实,论述清晰。主要内容包括Ubuntu介绍、文件系统管理、进程管理、压缩与查询
51CTO旗下网站MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题
_源码_站长之家
MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题
MySQL中涉及的几个字符集
character-set-server/default-character-set:服务器字符集,默认情况下所采用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
优先级依次增加。所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。
character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。
character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。
在客户端,如果没有定义character-set-results,则采用character-set-client字符集作为默认的字符集。所以只需要设置character-set-client字符集。
要处理中文,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语言,则设置为UTF8。
关于MySQL的中文问题
解决乱码的方法是,在执行SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。
character_set_client:客户端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。
设置这三个系统参数通过向MySQL发送语句:set names gb2312
关于GBK、GB2312、UTF8
UTF- 8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。
GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韩字符的大字符集合
如果是中文的网站 推荐GB2312 GBK有时还是有点问题
为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便
UTF-8可以看作是大字符集,它包含了大部分文字的编码。
使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。
gb2312是简体中文的码
gbk支持简体中文及繁体中文
big5支持繁体中文
utf-8支持几乎所有字符
首先分析乱码的情况
2.查询结果以乱码返回
究竟在发生乱码时是哪一种情况呢?
我们先在mysql 命令行下输入
show variables like '%char%';
查看mysql 字符集设置情况:
mysql& show variables like '%char%';
+--------------------------+----------------------------------------+
| Variable_name&&&&&&&&&&& | Value&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
+--------------------------+----------------------------------------+
| character_set_client&&&& | gbk&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&
| character_set_connection | gbk&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&
| character_set_database&& | gbk&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&
| character_set_filesystem | binary&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&
| character_set_results&&& | gbk&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&
| character_set_server&&&& | gbk&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&
| character_set_system&&&& | utf8&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&
&&&&&&| /usr/local/mysql/share/mysql/charsets/ |&
+--------------------------+----------------------------------------+
  在查询结果中可以看到mysql 数据库系统中客户端、数据库连接、数据库、文件系统、查询结果、服务器、系统的字符集设置在这里,文件系统字符集是固定的,系统、服务器的字符集在安装时确定,与乱码问题无关。乱码的问题与客户端、数据库连接、数据库、查询结果的字符集设置有关。
*注:客户端是看访问mysql 数据库的方式,通过命令行访问,命令行窗口就是客户端,通过JDBC 等连接访问,程序就是客户端我们在向mysql 写入中文数据时,在客户端、数据库连接、写入数据库时分别要进行编码转换。在执行查询时,在返回结果、数据库连接、客户端分别进行编码转换。现在我们应该清楚,乱码发生在数据库、客户端、查询结果以及数据库连接这其中一个或多
接下来我们来解决这个问题
在登录数据库时,我们用mysql --default-character-set=字符集-u root -p 进行连接,这时我们
再用show variables like '%char%';命令查看字符集设置情况,可以发现客户端、数据库连接、
查询结果的字符集已经设置成登录时选择的字符集了
如果是已经登录了,可以使用set names 字符集;命令来实现上述效果,等同于下面的命令:
set character_set_client = 字符集
set character_set_connection = 字符集
set character_set_results = 字符集
如果是通过JDBC 连接数据库,可以这样写URL:
URL=jdbc:mysql://localhost:3306/abs?useUnicode=true&characterEncoding=字符集
JSP 页面等终端也要设置相应的字符集
数据库的字符集可以修改mysql 的启动配置来指定字符集,也可以在create database 时加上
default character set 字符集来强制设置database 的字符集
通过这样的设置,整个数据写入读出流程中都统一了字符集,就不会出现乱码了
为什么从命令行直接写入中文不设置也不会出现乱码?
可以明确的是从命令行下,客户端、数据库连接、查询结果的字符集设置没有变化
输入的中文经过一系列转码又转回初始的字符集,我们查看到的当然不是乱码
但这并不代表中文在数据库里被正确作为中文字符存储
举例来说,现在有一个utf8 编码数据库,客户端连接使用GBK 编码,connection 使用默认
的ISO8859-1(也就是mysql 中的latin1),我们在客户端发送"中文"这个字符串,客户端
将发送一串GBK 格式的二进制码给connection 层,connection 层以ISO8859-1 格式将这段
二进制码发送给数据库,数据库将这段编码以utf8 格式存储下来,我们将这个字段以utf8
格式读取出来,肯定是得到乱码,也就是说中文数据在写入数据库时是以乱码形式存储的,
在同一个客户端进行查询操作时,做了一套和写入时相反的操作,错误的utf8 格式二进制
码又被转换成正确的GBK 码并正确显示出来。
这几天查找了很多关于mysql对中文字符编码的处理,读了各种零散的文章,最后做了全面的总结,现和大家分享:
MySQL字符编码 GBK、GB2312、UTF8区别:
1.系统编码
&show variables like '%character%';&&
&&&&&&&&&&& mysql& show variables like '%collation%';
改变系统编码:修改my.cnf(/f)中默认的编码选项[mysqld]下添加default-charcter-set=utf8& mysql 5.5以上版本换成了character-set-server=utf8 重新启动mysql
&& 命令形式&& mysql& SET NAMES 'utf8'; 重新启动mysql的时候所有的设置将失效
2.数据库编码
查看数据库编码: mysql& show create database db_name;
修改数据库编码: mysql& ALTER DATABASE db_name ####这里修改整个数据库的编码
&&&&&& &&& &&& CHARACTER SET utf8
&&&&&& &&& &&&& &&& DEFAULT CHARACTER SET utf8
&&&&&& &&& &&&& &&& COLLATE utf8_general_ci
&&&&&& &&& &&&& &&& DEFAULT COLLATE utf8_general_
在在建数据库的时候指定编码:
&&& &&& mysql& CREATE DATABASE db_name
&&& &&& &&&&&& CHARACTER SET utf8
&&& &&& &&&&&& DEFAULT CHARACTER SET utf8
&&& &&& &&&&&& COLLATE utf8_general_ci
&&& &&& &&&&&& DEFAULT COLLATE utf8_general_
3.数据库表和字段编码
查看数据库表和字段编码: mysql& show create table table_name;
&ALTER TABLE table_name DEFAULT CHARACTER SET utf8;&
修改字段编码: mysql& ALTER TABLE `table_name` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL&&&&&&&&&&&& 该命令就是将MYSQL数据库table_name表中 dd的字段编码改为utf8
4.命令行下插入汉字时指定编码:mysql& set names utf8;&& 有时候这一句很关键!
&&& &&& &&& &&& mysql& insert into test(name) values('王东伟');
总之,不管采用那一种编码方式,只要做到完全统一将能达到相应的效果。
最流行的Web Server Apache发布了一个重大升级版,Apache HTTP Server 2.4的一个重要目标是大幅改进性能。...
热门源码下载推荐
最受关注报导
编辑推荐排行问题引入:&&&&&&& 我们经常会遇到一些向MySQL数据库中插入中文,但是select出来的时候,却发现是乱码的情况。如我们向表a出入这样一段记录:iinsert into a values('你好helloworld你好','helloworld');可能当你访问它的时候,会发现他的结果变成如下图所示:那怎么样才能解决这种问题呢?通过下文对MySQL中字符集的一些操作,你将会得到答案!&查看库、表字符集命令:&&&&&&&& 要解决字符集的问题,首先要知道现在的系统、数据库、表、客户端等使用什么样的字符集,以及系统支持什么字符集等,下面介绍一些获取相关信息的语句:1.查看数据库支持的所有字符集或者2.查看当前状态,里面当然包括字符集的设置:status或者/s其中Db characterset对应的是数据库目录下的db.opt文件内容:3.查看系统字符集设置,包括所有的字符集设置:show variables like '%char%';得出如何所示结果:其中的含义如下:关于connection相关的字符集的官方文档:What character set is the statement in when it leaves the client?The server takes the character_set_client system variable to be the character set in which statements are sent by the client.&What character set should the server translate a statement to after receiving it?For this, the server uses the character_set_connection and collation_connection system variables. It converts statements sent by the client from character_set_client to character_set_connection (except for string literals that have an introducer such as _latin1 or _utf8). collation_connection is important for comparisons of literal strings. For comparisons of strings with column values, collation_connection does not matter because columns have their own collation, which has a higher collation precedence.&What character set should the server translate to before shipping result sets or error messages back to the client?The character_set_results system variable indicates the character set in which the server returns query results to the client. This includes result data such as column values, and result metadata such as column names and error messages.&&&& 从上文中可以看出character_set_connection、character_set_client、character_set_results三个字符集什么时候用到。从实际上可以看到,当客户端连接服务器的时候,它会将自己想要的字符集名称发给mysql服务器,然后服务器就会使用这个字符集去设置character_set_connection、character_set_client、character_set_results这三个&#20540;。如cmd是用gbk,而mysql workbench是用utf8.CMD:MySql WorkBench:&4.查看数据表中字符集设置:show full coshow create table tablename/G;&5.查看数据库编码:show cr&创建时指定字符集:&&&&&&& 知道了怎么查找字符集的相关信息之后,我们就要懂得怎么在创建指定对象的时候,为该对象匹配相应的字符集。1.服务器级:在安装MySQL时可以设置服务器的默认编码&#26684;式,也可对my.ini做修改,修改[mysqld]里面的character_set_server=utf8,则可设置character_set_server的&#20540;。2.数据库级:CREATE DATABASE db_name DEFAULT CHARACTER SET utf8;注意,如果不指定默认的字符集,则系统会根据character_set_database的&#20540;进行设置,如:3.表级:CREATE TABLE
`db_name`.`tb_name` (id VARCHAR(20) NOT NULL,name VARCHAR(20) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;从下图可看出,定义表的默认字符集为utf8,即使character_set_database为gbk,但是表的列都未utf8但要注意,如果没有定义表的默认字符集,则他会按照character_set_database的&#20540;来设置,如图所示:4.列级:CREATE TABLE
`db_name`.`tb_name` (
id varchar(20) NOT NULL,
name varchar(20) CHARACTER SET utf8 );从下图可以看到,整个表的默认字符集为gbk,所以没有指定字符集的列都用默认的字符集,而指定了字符集的列name,则使用指定的字符集utf8。&修改字符集命令&&&&&&& 如果已经是创建好的对象,那又应该如何处理呢。我们就应该对指定对象就行修改字符集的操作。1.修改character_set_connection、character_set_client、character_set_results三&#20540;:对于某一个连接来说,可以使用:SET NAMES 'charset_name' [COLLATE 'collation_name']命令SET NAMES 'charset_name' [COLLATE 'collation_name']相当于SET character_set_client = charset_ SET character_set_results = charset_ SET character_set_connection = charset_另外、还可以修改配置文件,对[mysql]下增加default-character-set=utf8,配置成你想要的字符集。(个人尝试在my.ini里面配置过,没有成效,不知道是不是被使用的客户端想要的字符集给覆盖掉了呢?)2.修改character_set_database字段:ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]3.修改character_set_server字段:最简单的方法是直接改my.ini配置文件里面[mysqld]的字段,增加character-set-server=gbk,然后重启mysqld,则可改为你想要的字符集。4.修改表的字符集:ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]5.修改列的字符集:col_name {CHAR | VARCHAR | TEXT} (col_length)
[CHARACTER SET charset_name]
[COLLATE collation_name]例如:ALTER TABLE t1 MODIFY
col1 VARCHAR(5)
CHARACTER SET latin1
COLLATE latin1_swedish_& 转自:/link?url=E5kHt1YHeMOFxI6p_5myGoGmHw0wwVi2KEOomo2tzKrHn9KihKaH0Cb5eGb8Bz015hKlP1oBYqOa-Ka2MV1K4SnR0aWTBnRrqEJiWqKMale参考资料:MySQL的Character Set Support:& /doc/refman/5.6/en/charset.htmlmysql常用查看库,表字符集命令:& http://bjlfp./blog/static//MySQL 插入数据时,中文乱码问题的解决: /sunzn/archive//2960248.html}

我要回帖

更多关于 mysql数据库默认编码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信