MySql编码转化问题

转载 2015年11月18日 12:36:38

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/html;charset=utf-8');

  在执行CRUD操作前先执行一下

  mysql_query("set names utf8");

  -------------------------

  连接数据库设置编码

  jdbc:mysql://地址:3306/数据库名?characterEncoding=utf8

  -------------------------

  java中的常用编码UTF-8;GBK;GB2312;ISO-8859-1;

  对应mysql数据库中的编码utf8;gbk;gb2312;latin1


Windows下修改mysql编码为utf-8

今天遇到个很头疼的问题,在向MySql数据库插入中文的时候,总是报下面的错误: java.sql.SQLException: Incorrect string value: '\xE5\xB8\x8C...
  • hzw19920329
  • hzw19920329
  • 2016年11月29日 14:46
  • 9679

MySQL编码

设置mysql编码方式(防止乱码) 如果能解决你的问题,给增加点人气啊!!!!!!!  1.从控制台输入命令。注意mysql中utf-8写做utf8.       例:mysql>alter...
  • haizhu668
  • haizhu668
  • 2013年04月09日 11:01
  • 603

Linux学习笔记之——ubuntu中mysql修改编码utf8

摘要:使用apt-get 命令安装的mysql默认不是utf8、在这里记录一下如何将编码修改成utf8。...
  • chenghuaying
  • chenghuaying
  • 2014年04月10日 12:27
  • 8609

关于mysql编码的问题

使用终端查询mysql数据库,由于编码不统一,因此要先做如下设置编码操作 mysql>set names gbk; set names gbk只可以修改character_set_client、c...
  • wl4066261
  • wl4066261
  • 2013年10月24日 12:38
  • 409

mysql编码设置问题

之前一直用的sqlserver,这两天改用mysql,用hibernate连接才发现出现乱码(mysql显示为乱码,取得的数据也为乱码),后来查了好多资料才知道:(1)原来是我在装mysql的时候没有...
  • luomt_1987
  • luomt_1987
  • 2010年07月07日 09:50
  • 140

Mysql编码出现错乱问题

Stop 1: 停止mysql服务           DOC 命令窗口 (win+R)   输入 :net stop mysql Stop 2.               进入mysql安装目录...
  • H880125
  • H880125
  • 2016年04月21日 14:50
  • 134

MySQL编码层次介绍

大家在使用数据库的时候,总会出现各种各样的编码问题,看了MySQL官方文档后,记录下一些MySQL的编码体系知识,如MySQL有那几层使用编码的地方,MySQL客户端和服务端交互时哪些环节涉及到的编码...
  • UltraNi
  • UltraNi
  • 2013年12月22日 17:28
  • 2310

mysql编码

mysql编码设置 MYSQL 2009-09-11 15:37 阅读73 评论1 字号: 大大 中中 小小 mysql> SHOW VARIABLES LIKE 'character_set...
  • gao8658
  • gao8658
  • 2014年01月03日 18:45
  • 590

mysql-ubuntu14.04 设置编码格式

查看编码格式 修改编码格式
  • qq_25730711
  • qq_25730711
  • 2016年12月07日 13:34
  • 637

MySql编码

一、调整服务器的字符集会导致1067错误 下列情况会出现1067错误: 1.设置好服务器的字符集后手支更改(my.ini)服务器的字符集 2.设置好服务器的字符集后,使用MySQLWorkben...
  • zl963079785
  • zl963079785
  • 2014年03月29日 17:06
  • 286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySql编码转化问题
举报原因:
原因补充:

(最多只允许输入30个字)