一个詭异的乱码问题(MYSQL)

public void test(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/e3noah?useUnicode=true&characterEncoding=UTF-8", "root", "123456");
ResultSet resultSet = connection.createStatement().executeQuery("select * from tab_product_detail");

        while(resultSet.next()){
            System.out.println(resultSet.getString("PRODUCT_OS"));
        }

connection.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

以上是我的测试代码, 当我将这以上代码通过使用 junit 的方式来运行时, 输出的中文是很正常的。 但是,当我把这个工程 部署到 tomcat 下,然后通过 url 请求来调用 这个方法 时,输出就出现乱码(????????), 真是奇怪了。

应该跟mysql 没什么关系,对于 mysql 的编码,基本上都已经设定了 utf8 的方式。

昨天弄到晚上4点钟都不没解决的问题~~~哎~~ 请了解的朋友给允相助呀~谢谢 了

console问题,
相信你执行main是在IDE执行的吧,
这个时候的控制台编码是你IDE编码,
你应该是用命令行启动tomcat的吧,
这个时候的控制台编码是你的cmd的编码

因为编码问题。UTF-8的字符在iso8859-1下肯定是乱码。
你可以在应用里加一个编码转换的filter,转换成utf-8。

同意楼上的看法。。tomcat默认的url编码方式是ISO-8859-1
所以用utf8,编码不统一,出现乱码

贴下面所述
mysql 编码配置
1.
show variables like '%char%'
后的结果
2.
调用测试方法的servlet

进入你的database 查看数据库编码方式

jsp 上面把编码改为utf8

部署到tomcat下 要设置下的. 环境编码得一至

比如windows 和linux 经常出现单一乱码的问题.
建议设置tomcat编码为utf-8 , 请求过来的 jsp也一样 get有请求先转下码再发

确实诡异,实在没看出是哪里有问题
数据库编码 utf8
数据库连接 utf8

如果数据不是乱码,那拿出来也应该不是是乱码,而跟Servlet的url编码没关系

编译java文件时的编码选项是不是有问题。用ide编译的,还是纯手动编译?

mysql jdbc driver:
jdbc.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8

tomcat

URI编码设置

问题:乱码问题,非通过表单的提交,比如直接在浏览器地址栏直接输入中文数据的乱码问题
http://yoururl//your.action?name=我的中文名&check=可能在服务器端乱码
解决:打开tomcat_home/conf/server.xml文件,设置Connector属性URIEncoding="UTF-8"就可以解决了,注意每一个Connector都要设置此属性

CREATE TABLE tableName (
...
) ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '一个测试表格';
设置了编码

查看你数据库的编码方式修改成GBK

你那两种调用的方法,把流程跑得就不一样吗,
SYSO中直接过肯定没事的。
servlet通过TOMCAT服务器也存在编码问题默认为ISO-8859-1 ,最好写一个过滤器EncodingFilter在进TOMCAT进行统一编码处理为utf-8,这样在tomcat中就不用处理了

既然是很诡异的话,那就买台新电脑吧
:arrow: