show variables like 'character%';
 SHOW VARIABLES LIKE 'collation_%';

recommend to use utf8mb4 instead of utf 8, please refer to the following page for detailed reason.

https://mathiasbynens.be/notes/mysql-utf8mb4

Java连接MySQL中文乱码处理     http://developer.51cto.com  2009-06-19 14:54  杨志伟  CSDN  我要评论(0)
      本文将为大家讲解如何处理Java连接过程中的MySQL中文乱码问题。一般MySQL中文乱码问题都是与字符集有关,这里作者的经历也大致差不多。
      MySQL默认编码是latin1

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 | D:\MySQL\share\charsets\ |
+--------------------------+--------------------------+
创建数据表并插入数据
. mysql> use test;
mysql> create table messages (
-> id int() unsigned auto_increment primary key,
-> message varchar() not null
-> ) engine=myisam default charset=utf8;
mysql> insert into messages (message) values ("测试MySQL中文显示");
mysql> select * from messages;
+----+-------------------+
| id | message |
+----+-------------------+
| | 测试MySQL中文显示 |
+----+-------------------+
编写程序(Java)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
stmt.executeUpdate("insert into messages (message) values ('测试MySQL编码')");
ResultSet rs = stmt.executeQuery("select * from messages");
while (rs.next()) {
int id = rs.getInt("id");
String message = rs.getString("message");
System.out.println(id + " " + message);
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
程序输出
????MySQL????????
??MySQL??

我们看到,尽管使用数据库时我们能够正常的添加和显示中文,但是在使用程序连接数据库时并不能够正常显示中文,为此我们需要修改MySQL的默认编码,编辑my.ini(MySQL配置文件)(如果是maria db ,配置文件是 /etc/mysql/conf.d/mariadb.cnf)文件对编码进行修改
      设置MySQL的默认字符集为utf8,找到客户端配置[client]在下面添加。
      default-character-set=utf8mb4 
      找到服务器配置[mysqld]在下面添加
      default-character-set=utf8mb4 

      character-set-server = utf8mb4

      collation-server = utf8mb4_unicode_ci
      character_set_server = utf8mb4
      collation_server = utf8mb4_unicode_ci

设定MySQL数据库以utf8编码运行,连接MySQL数据库时使用utf8编码
      停止和重新启动MySQL
      net stop mysql
      net start mysql

//实际上,最新mySQL以上两句已经失效,在命令行中先exit   然后重新登录可以实现这个目的
      重新连接数据库,查看编码,数据表内容

. mysql> show variables like 'character%';           

MariaDB [(none)]> show variables like 'character%';

  +--------------------------+----------------------------+
  | Variable_name | Value |
  +--------------------------+----------------------------+
  | character_set_client | utf8mb4 |
  | character_set_connection | utf8mb4 |
  | character_set_database | utf8mb4 |
  | character_set_filesystem | binary |
  | character_set_results | utf8mb4 |
  | character_set_server | utf8mb4 |
  | character_set_system | utf8 |                      //该行未更改,建议使用替换,这样能改的全面

| character_sets_dir | /usr/share/mysql/charsets/ |
  +--------------------------+----------------------------+

. mysql> use test;
. mysql> select * from messages;
. +----+-------------------------------+
. | id | message |
. +----+-------------------------------+
. | | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 |
. | | ??MySQL?? |
. +----+-------------------------------+
. 这里显示依然是乱码主要是因为之前使用的编码不同造成的,重新运行之前写的程序:java JDBCTest
. ????MySQL????????
. ??MySQL??
. 测试MySQL编码
. 从第三条记录我们可以看到现在程序连接数据库时可以正常的添加和显示中文了 //如果从MySQL command line中仍然查询不到数据,显示数据集为空,继续完成第三步使得系统的编码和mySQL的编码一致就可以查询出来了……& 27. mysql> select * from messages;
. +----+-------------------------------+
. | id | message |
. +----+-------------------------------+
. | | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 |
. | | ??MySQL?? |
. | | 娴嬭瘯MySQL缂栫爜 |
. +----+-------------------------------+
看回数据库的显示,我们会很奇怪的发现为什么显示的都是乱码,这主要是和windows下命令行的编码有关,在命令行上(命令提示符左上角图标处右键属性)查看属性->选项的当前代码页: (ANSI/OEM - 简体中文 GBK)(本人机子上是这样显示的) 也就是说命令行上使用的是GBK编码,而我们是在程序连接时使用utf8进行添加的,所以会出现有乱码,现在我们将客户端的编码改成gb2312或gbk试一下
. mysql> show variables like 'character%';
. +--------------------------+--------------------------+
. | Variable_name | Value |
. +--------------------------+--------------------------+
. | character_set_client | gb2312 |
. | character_set_connection | gb2312 |
. | character_set_database | utf8 |
. | character_set_filesystem | binary |
. | character_set_results | gb2312 |
. | character_set_server | utf8 | //最后你会发现这个还是没有更改,见下文
. | character_set_system | utf8 |
. | character_sets_dir | D:\MySQL\share\charsets\ |
. +--------------------------+--------------------------+
. mysql> use test;
. mysql> select * from messages;
. +----+-------------------+
. | id | message |
. +----+-------------------+
. | | ????MySQL???????? |
. | | ??MySQL?? |
. | | 测试MySQL编码 |
. +----+-------------------+

补充:更改character_set_server,在安装目录的bin文件夹下使用MySQLInstanceConfig.exe配置,在很多步骤中的一步(选择编码)选择第二项(使用UTF-8)或者第三项(自己设定)……更改完毕……

现在可以看到中文正常显示了(主要是因为utf8也支持中文),所以当我们使用命令行工具连接数据库的时候最好将客户端的编码改一下,如果使用GUI的话就不必了,同时修改客户端的编码之后程序依然能够正常显示(以上两点已经测试)
      所以如果在程序中要显示中文的话我们可以选用utf8,gb2312,gbk这三种编码,但是如果想在命令行添加中文数据或者查看的话就需要将客户端的编码设置为gb2312或gbk了,还是那句,CMD的编码有关

原文:http://hi.baidu.com/jsmlay/item/1f824518c8bf6d06e75c3637

注意如下:

遇到一个奇怪的mysql乱码问题,我的mysql全部已经设置成了utf-8,sql-front中文显示也是正常的,通过程序或者是FRONT都能够查找中文,就单单再mysql中是乱码。 mysql> SHOW VARIABLES LIKE 'character_set_%';   -----------------------------+    | 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:\MySQL\MySQL Server 5.0\share\charsets\ |    +--------------------------+-------------------------------------------+    8 rows in set (0.06 sec) 看似都正常但是在mysql中执行select出来的中文都是乱码,sql-front正常。

声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
自己结贴,字符就算都转成了UTF8但是控制台的字符好像一定要GBK,不知道什么原因我所有字符都是UTF8的但是要想不是乱码一定要在控制台中输入set names gbk;这样就不乱了,说实话很茫然。
 

mysql命令行下:

安装时是UTF8,my.ini下也改了。可使用show variables like 'character\_set\_%';查看时,发现

character_set_database=labins,character_set_server=labins

查看字符集  show variables like 'character\_set\_%';

修改字符集 set character_set_client=utf8;

MySQL字符集修改命令

1.修改服务器级 a. 临时更改: mysql>SET GLOBAL character_set_server=utf8; b. 永久更改:shell>vi /etc/my.cnf[mysqld]default-character-set=utf8

2.修改数据库级 a. 临时更改: mysql>SET GLOBAL character_set_database=utf8; b. 永久更改:改了服务器级就可以了

3.修改表级 mysql>ALTER TABLE table_name DEFAULT CHARSET utf8; 更改了后永久生效

4.修改列级修改示例: mysql>ALTER TABLE `products` CHANGE `products_model` `products_model` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; 更改了后永久生效 5.更改连接字符集 a. 临时更改:mysql> SET NAMES utf8;b. 永久更改: shell>vi /etc/my.cnf在[client]中增加:default-character-set=utf8

set names gbk

jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8

reference documents

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_character_set_filesystem

http://blog.sina.com.cn/s/blog_81547cad01014x0v.html

http://hatemysql.com/2011/05/17/mysql-character_sets_dir/

https://mathiasbynens.be/notes/mysql-utf8mb4

mysql 中文支持的更多相关文章

  1. linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /e ...

  2. linux下mysql环境支持中文配置步骤

    sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...

  3. 解决springmvc+mybatis+mysql中文乱码问题【转】

    这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...

  4. MySQL中文全文检索

    一.概述      MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度. 二.语法      MATCH (col1,col2,...) AGAINS ...

  5. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  6. php mysql 中文乱码解决方法

    本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ...

  7. MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档[原创]

    [文章+程序 作者:张宴 本文版本:v1.0 最后修改:2008.07.01 转载请注明原文链接:http://blog.zyan.cc/post/356/] MySQL在高并发连接.数据库记录数较多 ...

  8. Java连接MySQL中文乱码处理【转载】

    本文转载地址:http://developer.51cto.com/art/200906/130425.htm 感谢相关作者! MySQL默认编码是latin1 mysql> show vari ...

  9. QT连接mysql中文显示问题

    亲测OK! #vim /etc/mysql/my.cnf [mysqld]下面加入: default-character-set=utf8 重启mysql /etc/init.d/mysql rest ...

随机推荐

  1. [Codeforces178F2]Representative Sampling

    Problem 给定n个字符串Si,任意选出k个字符串Ai,使得其中任意两个字符串lcp之和最大. Solution 建一棵trie树,枚举每一个节点对答案的贡献,树形dp,时间复杂度像是O(N^3) ...

  2. fwrite文件写入数据

    文件的操作就两种:读和写 读:把文件中的内容读入到程序中,然后根据自己的项目需求把文件的数据进行相关的处理. 写:就是将程序中的数据,写入到文件中,去更新文件. 这么两种操作归到代码中就是这两种函数: ...

  3. vue项目总结

    1.项目的结构

  4. java导出Excel定义导出模板

    在很多系统功能中都会有Excel导入导出功能,小编采用JXLS工具,简单.灵活. JXLS是基于 Jakarta POI API 的Excel报表生成工具,它采用标签的方式,类似于jsp页面的EL表达 ...

  5. nodejs03-GET数据处理

    数据请求:--- 前台:form ajax jsonp 后台:一样 请求方式: 1.GET 数据在URL中 2.POST 数据在请求体中 请求数据组成: 头--header:url,头信息 身子--c ...

  6. /usr/lib/x86_64-linux-gnu/libopencv_highgui.so:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用

     LIBRARIES += boost_thread stdc++ boost_regex     https://github.com/rbgirshick/fast-rcnn/issues/52

  7. L345 大脑复生

    Yale Researchers Build BrainEx Machine to Restore Brain Function After Death Researchers at Yale Uni ...

  8. Inside a low budget consumer hardware espionage implant

    The following analysis was performed on a S8 data line locator which replied to the hidden SMS comma ...

  9. jasperreports+IReport 5.56,集成到Spring MVC4.0案例

    首先,先说一下需求,项目需要打印一些报表,也没多想,直接就在jsp页面设置了样式,前台直接调用window.print()写了打印功能,但是例会的时候,领导提出需要一些比较麻烦的打印,自己写肯定费时间 ...

  10. 【Python】随机数random模块randint、shuffle、random、sample、choice、uniform、

    1 ).random() 返回0<=n<1之间的随机实数n:2 ).choice(seq) 从序列seq中返回随机的元素:3 ).getrandbits(n) 以长整型形式返回n个随机位: ...