如果是字符集原因,解决方法如下:
1、shutdown immediate; 关闭数据库
2、startup mount; 开启数据库至挂载模式(只挂实例,不启动数据库)
3、alter system enable restricted session;开启会话限制
4、alter system set aq_tm_processes=0;修改系统参数
5、alter system set job_queue_processes=0;修改系统参数
6、alter database open;启动数据库为open
7、alter database national character set internal_user (zhs16gbk);修改字符集
8、alter system disable restricted session;关闭会话限制
括号内可填写字符集类型,zhs16gbk、AL32UTF8等字符集都支持中文。
如果你只是为了检测查询结果乱码的问题的话,建议你先将代码修改成如下:
Class.forName("com.mysql.jdbc.Driver").newInstance()
String url = "jdbc:mysql://localhost:3306/b2b?useUnicode=true&characterEncoding=UTF-8"
Connection con = DriverManager.getConnection(url, "root", "root")
//这是运行代码
//Connection con = SQLDB.DB()
Statement st = con.createStatement()
//ResultSet rs = st.executeQuery("select userid,username,company,avatar from b2b_member //where company like '%北京%'")
ResultSet rs = st.executeQuery("select * from b2b_member limit 0,10")
while (rs.next()) {
System.out.println(rs.getInt("userid") + " : " + rs.getString("username"))
}
这样首先确保能从数据库中查询到结果,然后看包含有中文的记录是否乱码。
如果确实是中文乱码了,那么你应该看数据库表中对应记录的汉字内容是否在存储的时候就已经乱码了,如果数据库中的内容正常,而查询出来的结果乱码的话,基本上可以肯定数据库存储字段的数据格式跟你url的“utf8”格式拼配不上造成的;
如果这样检查了,数据库字段的存储格式也是"utf8",那么很有可能就是项目的编码格式不是造成java文件编译时,sql语句中的中文发生了乱码,比如myeclipse的默认编码格式就是"GBK"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)