mysql 部分汉字乱码_一次mysql部分汉字乱码解决过程

从Confluence db导出数据在控制台上乱码,在SPRING MVC页面也乱码,如”璟”。从confunce应用页面上看,无乱码。到底原因在哪里呢?

由于涉及的层非常多,只能用隔离法。

主要有几种可能

1)db里面的数据是否真有乱码

2)输出到页面上的汉字有乱码

3)页面编码识别有错

1.1.1用mysql控制台检查:

mysql> show variableslike'char%';

+--------------------------+-----------------------------------+

| 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:\MySQLServer5.0\share\charsets\ |

+--------------------------+-----------------------------------+

8 rows in set (0.05 sec)

mysql> show variableslike'coll%';

+----------------------+-------------------+

| Variable_name| Value|

+----------------------+-------------------+

| collation_connection | gb2312_chinese_ci |

| collation_database| utf8_general_ci|

| collation_server| utf8_general_ci|

+----------------------+-------------------+

3 rows in set (0.00 sec)

在控制台依然乱码。

下载MYSQL Administrator,用Mysql query browser查看,OK的。

只能剩下2种可能了。

1.1.2用JDBC直接连接DB

String url ="jdbc:mysql://127.0.0.1:3306/scmproj?user=root&password=mysql&useUnicode=true&characterEncoding=GB2312";

java.sql.Connection con = DriverManager.getConnection(url);

Statement stmt = con.createStatement();

String query = "select * from users where email='yi.suy@alibaba-inc.com'";

ResultSet rs = stmt.executeQuery(query);

while (rs.next())

{

// System.out.println(new

// String(rs.getString(1).getBytes("UTF8")).toString());

System.out.println(new String(rs.getString("fullname")));

}

同样输出正确。

1.1.3用IBATIS API连接DB

private static SqlMapClient sqlMapper;

private static SqlMapClient sqlMapper;Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");

// Reader reader =

// Resources.getResourceAsReader("D:/eclipse-SDK-3.3.2-win32/project/SCMProj/bin/SqlMapConfig.xml");

sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);

reader.close();

List list =sqlMapper.queryForList("getProjectByName", queryStr);

SCMProject proj=(SCMProject) list.get(0);

正常。

剩下来的就是检查SPRING的编码格式了。

最后锁定SPRINGVelocityViewResolver:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值