研究了很多天,才发现是向数据库传递中文参数出的问题String sql = "select * from view_teacourse where username=? or course_name=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "于禁");
pstmt.setString(2, "于禁");
ResultSet rs = pstmt.executeQuery();
按照上述代码,可以得到一个ResultSet,并且rs不为空,但却取不出相对应的结果。
将“于禁”换成“Tom”后可以得到正确的结果。
跪求,如何解决setString方法中中文传递不正确的问题呢?PS:我的数据库的配置文件已经设置了#init_connect='SET NAMES gbk'Java Web乱码MYSQL
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "于禁");
pstmt.setString(2, "于禁");
ResultSet rs = pstmt.executeQuery();
按照上述代码,可以得到一个ResultSet,并且rs不为空,但却取不出相对应的结果。
将“于禁”换成“Tom”后可以得到正确的结果。
跪求,如何解决setString方法中中文传递不正确的问题呢?PS:我的数据库的配置文件已经设置了#init_connect='SET NAMES gbk'Java Web乱码MYSQL
select * from view_teacourse where username='于禁' or course_name='于禁'
如果这样数据库查不到的话,说明项目编码与数据库的不一致啊。
果真不可以....换成Tom就可以了。。如何设置项目编码?我用的都是默认的...IDE是Myeclipse
<!-- encoding Filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>