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

Java 为什么jdbc编码utf-8不起作用?,java,mysql,jdbc,encoding,utf-8,Java,Mysql,Jdbc,Encoding,Utf 8,我对编码有问题。当我只使用这个类的主要测试方法时,输出很好 public static void main(String[] args) { System.out.print("Default Charset=" + Charset.defaultCharset()); System.out.println("testing ńńńń"); } 输出为: 默认字符集=UTF-8 测试 但是当我根据目的使用这个类时,编码失败了!一些代码: public class MySQL { pu

我对编码有问题。当我只使用这个类的主要测试方法时,输出很好

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

}
输出为: 默认字符集=UTF-8 测试

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

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字符中读取页面内容。

为什么您认为Charset.defaultCharset是相关的?这与JDBC连接有什么关系?与其发送到控制台,不如写入一个文件,看看输出是否仍然存在问题?Charset.defaultCharset与您的数据库没有任何共同之处。首先,请使用命令行客户机检查您的数据库/表是否支持UTF-8jw23,yes DB已经用UTF字符填充了行。