在开发程序的时候,我们使用mysql数据库开发的时候,有时会碰到自己明明输入的是中文,为什么数据库中存储的就是????

1、在配置Connection URL时,加上?useUnicode=true&characterEncoding=utf-8

2、编辑/etc/my.cnf

在[mysqld]下添加

default-character-set=utf8

在[client]下添加

default-character-set=utf8

 

可是这样做的原理是什么?为什么这样做就能解决问题那?

逐步分析一下:

1、useUnicode=true这个用加吗?答案是不用,翻看connector-j-en.a4.pdf

它的默认值就是true

2、 mysqld 下的default_character_set=utf8;,这个需要吗?答案是不需要。查看refman-5.1

它的作用是

当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。可以使用--default-character-set设置字符集;

如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则作为默认值。默认数据库的字符集和校对规则可以用作character_set_database和 collation_database系统变量。无论何时默认数据库更改了,服务器都设置这两个变量的值。如果没有 默认数据库,这两个变量与相应的服务器级别的变量(character_set_server和collation_server)具有相同的值。

大白话就是:如果你建表的时候没有指定字符编码,则会使用character_set_database,如果character_set_database也没有设值,则使用character_set_server

3、 client 下的default_character_set=utf8; 它是需要的,可是它的作用是干吗的?

它的作用等同执行以下3个命令

SET character_set_client = utf8

SET character_set_results = utf8;

SET character_set_connection = utf8;

这3个参数的作用如下

系统变量character_set_client:用来指定解析客户端传递数据的编码

系统变量character_set_connection:用来指定数据库内部处理时使用的编码

系统变量character_set_results:用来指定数据返回给客户端的编码方式

现在讲述一下?useUnicode=true&characterEncoding=utf-8中的characterEncoding

它的作用就是指定character_set_client和character_set_connection的值,而在jdbc链接中使用characterSetResults=UTF-8,即可设置character_set_results的值

但是如上所述,当你配置了client的default_character_set之后,characterEncodingcharacterSetResults这两个变量你设置与否都不重要了。

 

结论如下:

如果你只愿意配置服务器的话:

在[client]下添加

default-character-set=utf8即可

如果你只愿意配置客户端的话:

你可以使用jdbc:mysql://localhost:3306/test? characterEncoding=UTF-8&characterSetResults=UTF-8即可

使用jdbc

character_set_client - utf8

character_set_connection - utf8

character_set_database - utf8

character_set_filesystem - binary

character_set_results -

character_set_server - utf8

character_set_system - utf8

character_sets_dir - /usr/share/mysql/charsets/

使用mysql客户端

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/

mysql编码详解的更多相关文章

  1. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  2. mysql 存储过程详解 存储过程

    mysql存储过程详解 1.      存储过程简介         我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...

  3. MySQL存储过程详解 mysql 存储过程

    原文地址:MySQL存储过程详解  mysql 存储过程作者:王者佳暮 mysql存储过程详解 1.     存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...

  4. MySQL存储过程详解 mysql 存储过程(二)

    mysql存储过程详解 1.      存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...

  5. MySQL字符集详解

    Reference:  https://www.cnblogs.com/wcwen1990/p/6917109.html MySQL字符集详解   一.字符集和校验规则 字符集是一套符合和编码,校验规 ...

  6. Python2.7字符编码详解

    目录 Python2.7字符编码详解 声明 一. 字符编码基础 1.1 抽象字符清单(ACR) 1.2 已编码字符集(CCS) 1.3 字符编码格式(CEF) 1.3.1 ASCII(初创) 1.3. ...

  7. MySQL存储过程详解 mysql 存储过程(转)

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  8. mysql存储过程详解实例

    mysql存储过程详解 1.      存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...

  9. mysql存储过程详解及基于PHP使用实例

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

随机推荐

  1. jQuery 停止动画、jQuery Callback 函数、jQuery - Chaining

    一.jQuery 停止动画 jQuery stop() 方法用于在动画或效果完成前对它们进行停止. stop() 方法适用于所有 jQuery 效果函数,包括滑动.淡入淡出和自定义动画. $(sele ...

  2. laravel小抄

    原文地址:http://cheats.jesse-obrien.ca/ Artisan // Displays help for a given command php artisan --help ...

  3. js解决快速回车重复订单提交(客户端方式)

    Html代码: <form action="order_add_data.php" method="post" name="order_adds ...

  4. MAC自动备份数据到服务器

    需求:公司内部使用自己电脑,回家需要使用另一台电脑,所以想时时备份公司用的电脑中文件.代码到服务器上,回家就可以用啦 1 无密码使用scp (1)第一步:生成密匙对,我用的是rsa的密钥.使用命令 & ...

  5. 两天三场Java实习生面试总结

    Java 关键字(如abstract)[详解] String[相关面试题] String.StringBuffer.StringBuilder区别 String中有没有使一个字符串反转的方法 线程的实 ...

  6. 【ASP.NET Web API教程】1.1 第一个ASP.NET Web API

    Your First ASP.NET Web API (C#)第一个ASP.NET Web API(C#) By Mike Wasson|January 21, 2012作者:Mike Wasson ...

  7. js细节

    1.小心函数中的“s“ getElementsByTagName:得到的是数组 getElementById:得到的是对象 2.js 中设置哪一项被选中 subject.selectedIndex = ...

  8. 基于jQuery的AJAX和JSON的实例

    通过jQuery内置的AJAX功能,直接访问后台获得JSON格式的数据,然后通过jQuer把数据绑定到事先设计好的html模板上,直接在页面上显示. 我们先来看一下html模板:            ...

  9. 嵌入式 H264中的SPS、PPS提取与作用

    使用RTP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那么这两 ...

  10. min_free_kbytes

    http://kernel.taobao.org/index.php?title=Kernel_Documents/mm_sysctl min_free_kbytes 先看官方解释:This is u ...