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:
總結
以上是生活随笔為你收集整理的mysql 部分汉字乱码_一次mysql部分汉字乱码解决过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot (八): Myb
- 下一篇: dede模板加入php无法生成栏目,织梦