为什么jdbc编码utf-8不起作用?

时间:2014-02-18 18:59:16

标签: java mysql jdbc encoding utf-8

我遇到编码问题。当我只使用这个类的main(测试)方法时,输出很好

public static void main(String[] args) {
System.out.print("Default Charset=" + Charset.defaultCharset());
System.out.println("testing ńńńń");

}

输出是: 默认字符集= UTF-8 测试ńnńń

但是当我根据目的使用这个类时,编码失败了!一些代码:

public class MySQL {
    public static Connection connect(){
    try{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    return DriverManager.getConnection("jdbc:mysql://localhost/flats?useUnicode=true&characterEncoding=utf-8","root","****");
    }catch(Exception e){
    throw new Error(e);
}}

public static long selectPrice(Connection c, String city){
    try{
        PreparedStatement ps = c.prepareStatement("" +
                "SELECT price FROM flatlist" +
                "WHERE city=? " );
        ps.setString(1, city);
        System.out.println(ps);
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.out.println("ńńńńńńń");
        ResultSet rs = ps.executeQuery();
    rs.close();
    ps.close();
    }

我收到了输出:

com.mysql.jdbc.JDBC4PreparedStatement@19cff046: SELECT price FROM flatlist WHERE city='????'  
Default Charset=ISO-8859-1  
???????

这个MySQL类与jsp文件连接。但是在网站上我能够提供utf8字符,也可以从请求utf8字符读取页面。

0 个答案:

没有答案