0.MySQL-JDBC驱动文档 官方解释

1.数据库的字符编码和表内字段的编码

在MySQL中数据库的字符编码和表内字段的编码的要指定为utf8(utf8_general_ci)

2.jsp中

pageEncoding="UTF-8"

request.setCharacterEncoding("UTF-8");

3.(十分重要)JDBC获取Connection时

设置url为 jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

一般设置完前三步就基本没问题了。如果还不行,就修改mysql的配置文件吧。

4.MySQL配置文件 my.ini中

## UTF 8 Settings
#init-connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
#character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="D:/xampp/mysql/share/charsets"

把前面的注释去掉。

重启MySQL,重启Tomcat。

以下为转载

charset 和 collation 有多个级别的设置:服务器级、数据库级、表级、列级和连接级

1.服务器级
  查看设置:show global variables like 'character_set_server'; 和 show global variables like 'collation_server';
  修改设置:在OPTION FILE (/etc/mysql/my.cnf)里设置:
   [mysqld]
    character_set_server=utf8
    collation_server=utf8_general_ci

2. 数据库级
   查看设置:select * from information_schema.schemata where schema_name = 'cookbook';
   设置:
     1.若没有显式设置,则自动使用服务器级的配置
     2.显式设置:在创建库时指定
       create database playUtf8  DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

3.表级
   查看设置:show create table course;
   设置:
     1.若没有显式设置,则自动使用数据库级的配置
     2.显式设置:在创建表时指定
       create table utf ( id int ) default charset=utf8 default collate=utf8_bin;

4.列级
   查看设置:show create table course;
   设置:
     1.若没有显式设置,则自动使用表级的配置
     2.显式设置:

CREATE TABLE Table1(column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci);

5.连接级别
  查看设置:
     show variables like 'character_set_client';  # 服务端使用这个编码来理解客户端发来的statements
     show variables like 'character_set_connection' ; # 我还不知道什么意思,等看了mysql源码再说
     show variables like 'character_set_results'; # 服务端使用这个编码回送结果集和错误信息
  设置:
     客户端在连接时可以指定这些参数;同时,服务端也提供了一个Global范围的值,客户端未指定这些参数时,服务端就使用这个Global值。这个global值怎么设置的? 我查遍了很多文档,似乎还没看到设置的办法 (有人说通过my.cnf,或者在启动mysqld时指定命令行参数,其实都是错的)

附:connector/j传输SQL时用什么编码?
  答案: "The character encoding between client and server is automatically detected upon connection. The encoding used by the driver is specified on the server using the character_set_server system variable for server versions 4.1.0 and newer."
   也就是说,是在连接时查询服务器端的character_set_server值,再确定连接将使用的编码。
   不过,官方文档还说,"要想覆盖客户端上的自动检测编码功能,可在用于连接到服务器的URL中使用“characterEncoding”属性。" 

成功解决Tomcat-JDBC-MySQL乱码的更多相关文章

  1. 解决Tomcat控制台输出乱码问题

    解决Tomcat控制台输出乱码问题 打开Edit Configuration,在VM options一栏输入 -Dfile.encoding=UTF-8 然后到IDEA的bin目录找到 idea64. ...

  2. 解决phalcon读取mysql乱码

    原先的项目用的是phalcon,迁移到新服务器上面后中文字符变为'?',即便连接参数设置了charset => 'utf8'也无效,一开始怀疑是版本问题,后来直接拷过去完全一样的库也没用:最后还 ...

  3. 解决 Tomcat 控制台输出乱码(Tomcat Localhost Log / Tomcat Catalina Log 乱码)

    1. 按下图修改 先找到你的 Tomcat 安装目录,然后进入conf文件夹,找到 logging.properties,并打开它,然后把所有 UTF-8 格式的编码改成 GBK即可,具体操作如下图

  4. 解决tomcat中文传输乱码问题

    <Connector URIEncoding="utf-8" connectionTimeout="20000" encoding="utf-8 ...

  5. 【blog】用emoji-java解决Emoji存储MySQL乱码问题

    emoji-java 核心方法: EmojiParser.parseToAliases(string); 将表情符号转为字符 EmojiParser.parseToUnicode(string); 将 ...

  6. Tomcat启动中文乱码解决方法

    一:解决方法一: 1.查看电脑系统的编码 针对Windows平台下,点击运行--输入cmd,enter键进入命令窗口,输入:chcp可以得到操作系统的代码页信息(代码页:字符集编码的别名),可以从控制 ...

  7. jdbc mysql写入中文乱码解决

    一. 问题 数据库编码:utf8 mysql> create database dbnameDEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ...

  8. Tomcat+ssh+Mysql本地正常,远程服务器中文乱码。(转)

    ssh2+mysql中文乱码解决方法(统一使用UTF-8编码) 中文乱码,首先要区分是页面乱码.action乱码,还是数据库乱码.大致的原理是java使用unicode编码– >window使用 ...

  9. JDBC mysql 中文乱码

    中文乱码似乎是程序编写中永恒的一个话题和难点,就比如MySQL存取中文乱码,但我想做任何事情,都要有个思路才行,有了思路才知道如何去解决问题,否则,即使一时解决了问题,但过后不久又碰到同样的问题可能又 ...

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

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

随机推荐

  1. kettle学习-day1-介绍、下载、安装

    QQ群:306059317\ 技术支持:荷露叮咚网络学苑http://www.heludd.com/kettle 下载最新版,获取视频教程 kettle安装: 1).下载需要安装的kettle版本,官 ...

  2. 【ROW_NUMBER 函数(Transact-SQL)】

    [ROW_NUMBER 函数(Transact-SQL)]返回结果集分区内行的序列号,每个分区的第一行从 1 开始. 注释: ROW_NUMBER() OVER (PARTITION BY COL1 ...

  3. oracle11g 创建用户并授权

    Oracle创建用户并给用户授权查询指定表或视图的权限用sys账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAUL ...

  4. Factory Method模式

    Factory Method(工厂方法)模式属于GoF设计模式中的创建型分组,它用于在不之制定待创建对象的具体类的情况下创建对象.--<asp.net设计模式> 说白了就是一个人想要出国旅 ...

  5. js实现跨域(jsonp, iframe+window.name, iframe+window.domain, iframe+window.postMessage)

    一.浏览器同源策略 首先我们需要了解一下浏览器的同源策略,关于同源策略可以仔细看看知乎上的一个解释.传送门 总之:同协议,domain(或ip),同端口视为同一个域,一个域内的脚本仅仅具有本域内的权限 ...

  6. 前端性能优化工具--DOM Monster

    当我们开发web应用的时候,性能是一个永远不能回避的问题.其实对于DOM的性能调试也是一个不可或缺的过程.使用DOM monster你只需要添加到你的”书签中“,在任何需要调试的页面点击这个书签,它就 ...

  7. C# 代理HTTP请求

    目的: 应该有不少人需要去某些网站不停爬取数据,有时会使用HTTPRequest一直请求某个网站的某个网址.有的网站比如 QQ空间,赶集网(这是我测试的网站),不停刷新会提醒你的账号异常,可能会查封你 ...

  8. bzoj 1023: [SHOI2008]cactus仙人掌图

    这道题是我做的第一道仙人掌DP,小小纪念一下…… 仙人掌DP就是环上的点环状DP,树上的点树上DP.就是说,做一遍DFS,DFS的过程中处理出环,环上的点先不DP,先把这些换上的点的后继点都处理出来, ...

  9. JS 正则 获取URL参数

    function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...

  10. coreseek安装使用

    本文引自:http://www.phperz.com/article/14/0615/95.html sphinx的安装使用,其实都是大同小异,以下以 coreseek安装为例Coreseek 是一款 ...