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字符填充了行。