我遇到编码问题。当我只使用这个类的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字符读取页面。