『壹』 springmvc 在web配置了编码拦截器,并且我整个工程都是UTF-8格式的,为什么responseText中文还是乱码
<%@pagecontentType="text/html;charset=UTF-8"%>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
你所说的整个工程都是UTF-8格式,那么jsp页面上是不是专都加上了这两属句
『贰』 如何在Spring中解决中文乱码的方法
可以编写一个Filter
public class EncodingFilter implements Filter {
/** 编码 */
String encoding = null;
/** 销毁编码 */
public void destroy() {
.encoding = null;
}
/**
* 执行过滤链,对请求和相应设置编码
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (encoding != null) {
// 对请求进行编码设置
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
}
// 将处理权转交给下一个处理器
chain.doFilter(request, response);
}
/**
* 初始化编码,从配置文件中获取编码的值
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
}
}
需要再Web.xm中注册拦截器
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.sato.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
『叁』 通过spring依赖注入时,得到的实体对象的中文属性值是乱码,该怎么解决
检查一下你项目的编码,改成utf8的
『肆』 springmvc js ajax请求 中文乱码问题
初略的看了一下你的问题,大概明白了,出现乱码的原因大概是你的服务器编专码问题,属tomcat的默认编码是ISO-8859-1这种编码,所以如果你需要更改,tomcat/conf/server.xml中找到 Connector 在后面加上 URIEncoding="UTF-8" 即可,如果不更改的话,你就得在action中,也就是接受端用ISO-8859-1解码回来,如new String(str.getBytes("ISO-8859-1"),"UTF-8");如果用了拦截器的话,就在拦截器中统一解码好啦。你可以试试!希望能帮到你哦!
『伍』 spring MVC接收中文乱码问题
1:表单提交controller获得中文参数后乱码解决方案
注意:jsp页面编码设置为UTF-8
form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<formaction="${ctx}/user/addUser"name="userForm"method="post">
修改web.xml,增加编码过滤器,如下(注意,需要设置forceEncoding参数值为true)
<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2:表单提交controller获得中文参数后正常显示控制台,然后保存数据库出现乱码
注意:数据库编码是否支持中文
数据库表和表字段是否正确
在配置连接数据库的参数设置修改:
<propertyname="url"value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8"></property>第一种情况:
jsp页面中文输入,到controller乱码,这时候需要设置的是在web.xml文件中添加一个编码的过滤器(filter)将编码统一为UTF-8,代码如下:
Web.xml配置文件:
view
sourceprint?
01.<filter>
02.<filter-name>CharacterEncodingFilter</filter-name>
03.<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
04.<init-param>
05.<param-name>encoding</param-name>
06.<param-value>utf-8</param-value>
07.</init-param>
08.</filter>
09.<filter-mapping>
10.<filter-name>CharacterEncodingFilter</filter-name>
11.<url-pattern>/*</url-pattern>
12.</filter-mapping>
这里需要注意的是,最好把这段代码放在web.xml中开头的位置,因为拦截有顺序,如果放在后面的话容易拦截不到。
第二种情况:
数据库中文数据,jsp页面显示乱码(不是严格意义上的乱码,而是以问号的形式呈现)
由于我们前后台的数据交互使用的是json数据,出现这种情况的原因我也不太清楚,之前也没遇到过,只能怪自己做过的项目太少,解决起来也不困难,只需要在转json的时候设置一下编码格式就可以了,代码如下:
view
sourceprint?
1.response.setContentType("application/json;charset=UTF-8");//防止数据传递乱码
写上这句话就不会再出现乱码了。
第三种情况:
页面中文,传递到controller也是正确的,但是保存到数据库之后就是乱码(也不是严格意义的乱码,跟上面一样全是问号)
这个问题困扰了我一段时间,开始觉得数据库的编码格式不正确,重新创建了编码格式为utf-8的数据库也还是不可以,最后觉得是jboss的问题,我们的服务器用的是jboss,上网查了资料在连接数据源的时候加上编码格式就可以了
『陆』 spring乱码问题,菜鸟求教
1:表单提交controller获得中文参数后乱码解决方案
注意: jsp页面编码设置为UTF-8
form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果
[html] view plain
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
[html] view plain
<form action="${ctx}/user/addUser" name="userForm" method="post">
修改web.xml,增加编码过滤器,如下(注意,需要设置forceEncoding参数值为true)
[html] view plain
<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2:表单提交controller获得中文参数后正常显示控制台,然后保存数据库出现乱码
注意:
数据库编码是否支持中文
数据库表和表字段是否正确
在配置连接数据库的参数设置修改:
[html] view plain
<property name="url" value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8"></property>
『柒』 为什么使用了SPRING 过滤器还会出现中文乱码
MVC的过滤器如果优先于spring的编码过滤器就会出现乱码情况 需要将spring的编码过滤器优先等级提高
『捌』 不用spring怎么写filter来解决中文乱码的问题,谢谢!在线等
可以编写一个Filter
public class EncodingFilter implements Filter {
/** 编码 */
String encoding = null;
/** 销毁编码 */
public void destroy() {
this.encoding = null;
}
/**
* 执行过滤链,对请求和相应设置编码
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (encoding != null) {
// 对请求进行编码设置
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
}
// 将处理权转交给下一个处理器
chain.doFilter(request, response);
}
/**
* 初始化编码,从配置文件中获取编码的值
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
}
}
需要再Web.xm中注册拦截器
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.sato.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
『玖』 spring mvc用注解方式配置控制器,怎么出现乱码
1:表单提交controller获得中复文参数制后乱码解决方案
注意: jsp页面编码设置为UTF-8
form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果
[html] view plain
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
[html] view plain
<form action="${ctx}/user/addUser" name="userForm" method="post">
『拾』 在使用ssh框架中,出现了 中文乱码问题 ,怎么解决
解决乱码几小点:
1.配置过滤器,可以选择自己写,既然你用的SSH框架就更简单了,直接用Spring的过滤器,web.xml里配置一下即可。
2.Jsp页面设置编码,所有地方都要相同,我习惯用GBK
<%@ page contentType="text/html;charset=GBK" %>
也可以使用HTML的页面编码配置
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
3.配置Tomcat(我们用,别的服务器另找)编码
在server.xml中配置,如:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
4.如果还出现乱码,只能用这招了,我很少用
new String(s.getBytes("ISO-8859-1"),"GBK")
一般用Form提交前两种方式就不会出现乱码,用get请求,在url后追加中文参数前两种不管用,需配置Tomcat或者第四种,重新编码