ssh中文乱码 从页面上得到的值(中文) 在action中显示的是乱码的。请问怎么解决 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在WEB.xml配置文件中加入 <filter> <filter-name>Spring character encoding filter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>Spring character encoding filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> SSH的可以用spring自带的过滤器来实现过滤操作.下面是我遇到过的问题,以及整理的东西。希望对你有用哈...UTL 传参乱乱码问题解决方案方案一·页面间的传递:由A页面通过url传值给B页面或者由A页面的一个连接直接调整到某个action 产生乱码问题。1· 如:<a href ="Detail.jsp?userName=<%=中国%>">数据显示</a><a href ="showDetail.do?userName=<%=url%>">数据显示</a>这种情况下如果不进行编码转换在B页面接到的值将会产生乱码。第一步:首先我们把“中国”进行处理后再进行传递<%String url = java.net.URLEncoder.encode("中国","UTF-8");%>经过处理后的url会以:%E9%9A...这样的形式进行传递第二步:通过URL进行传递:<a href ="Detail.jsp?userName=<%=url%>">数据显示</a>2· 我们在B页面或者在将要接收此URL的action做如下处理就不会有乱码发生了<% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("userName");%>**注意:在如果是调整到具体的action时,只要按常规做法,直接设置编码格式,以及和往常一下获取传来的参数即可。经以上处理后页面间的乱码问题可以解决了。 3L+2L就是页面设置编码方式在web.xml加上过滤器应该就OK当然数据库保存的两说了 如果是用的struts2.0,页面表单提交方式写成post提交乱码不会出现了 <filter> <filter-name>char</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> </filter> <filter-mapping> <filter-name>char</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>web.xml里面配置一下 OK了 <param-value>GBK </param-value>这里面到底是gbk还是utf-8? GBK和UTF-8都支持中文,从效果上都是可以的 继承javax.servlet.Filter 写个过滤器,或者在Action中重构字符串,还有就是重写ActionServlet这个类!方法很多的 <!-- 过滤器 --> <filter> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>filters.CharsetAllEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter>//CharsetAllEncodingFilter .javapackage filters;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class CharsetAllEncodingFilter implements Filter { private String encoding = null; /** * Request.java 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的 * HttpServletRequest 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request * 对象替换页面中的 request 对象即可. */ class Request extends HttpServletRequestWrapper { private String encoding = null; public Request(HttpServletRequest request) { super(request); encoding = CharsetAllEncodingFilter.this.encoding; } /** * 转换由表单读取的数据的内码. 从 ISO 字符转到 在web.xml中设置的encoding. */ public String toChi(String input) { if (input == null) { return null; } else { try { byte[] bytes = input.getBytes("ISO8859-1"); return new String(bytes, encoding); } catch (Exception ex) { } return null; } } /** * Return the HttpServletRequest holded by this object. */ private HttpServletRequest getHttpServletRequest() { return (HttpServletRequest) super.getRequest(); } /** * 读取参数 -- 修正了中文问题. */ public String getParameter(String name) { return toChi(getHttpServletRequest().getParameter(name)); } /** * 读取参数列表 - 修正了中文问题. */ public String[] getParameterValues(String name) { String values[] = getHttpServletRequest().getParameterValues(name); if (values != null) { for (int i = 0; i < values.length; i++) { values[i] = toChi(values[i]); } } return values; } } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpreq = (HttpServletRequest) request; if (httpreq.getMethod().equals("POST")) { request.setCharacterEncoding(encoding); } else { request = new Request(httpreq); } chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { encoding = filterConfig.getInitParameter("encoding"); }} 过滤器tomcat的server.xml的URIEncodinggood luck 我这有两种方法: 一、像楼上各位想法一样写一个过滤器,这里就不再详述。 二、写一个类继承ActionServlet,重写service方法,在原方法基础上加上request.setCharacterEncoding("gb2312");response.setCharacterEncoding("gb2312");两句话。然后web.xml中配置自己写的这个ActionServlet而不是框架自带的,如class MyActionServlet extends ActionServlet{ @Override public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("gb2312"); response.setCharacterEncoding("gb2312"); super.service(request, response); } 实现接口Filter过滤,配置 Web.xml 1.首先写一个servlet类import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class AllFilter implements Filter { private String encoding; public String getEncoding() { return encoding; } public void setEncoding(String encoding) { this.encoding = encoding; } public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub arg0.setCharacterEncoding(this.encoding); arg1.setCharacterEncoding(this.encoding); arg2.doFilter(arg0, arg1); } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub this.encoding=arg0.getInitParameter("encoding"); }}2.配置web.xml <filter> <filter-name>AllFilter</filter-name> <filter-class>com.newer.crm.web.filter.AllFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>gbk</param-value> </init-param> </filter> <filter-mapping> <filter-name>AllFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 如果是ssh整合(struts2):方法一:把spring.jar包拷到lib下,然后,web.xml里在struts2的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></filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>方法二:如果struts2的版本高于2.1.6就可以在struts.xml里这样配置<constant name="struts.i18n.encoding" value="GBK"></constant> 如何用JavaScript实现返回到上一页? hql的问题 如何将oralce中的数据导入到access数据库中? java获取和人产生通讯的IP地址 请问现在初学struts,是应该学struts1还是struts2? spring + hiberate 框架下如何配置多个数据库连接 请问现在软件企业中都是用什么开发环境来做struts的开发啊 帮我翻译一下单词的准确意思 我的JAVA入门--我的HELLO WORLD 利用JAVAMAIL发送邮件时的身份验证问题. struts 跳转,希望地址栏的后缀名是.jsp而不是.do之类的,怎么办? 用Java写一个监听器
<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
下面是我遇到过的问题,以及整理的东西。希望对你有用哈...UTL 传参乱乱码问题解决方案方案一·
页面间的传递:由A页面通过url传值给B页面
或者由A页面的一个连接直接调整到某个action
产生乱码问题。
1· 如:
<a href ="Detail.jsp?userName=<%=中国%>">数据显示</a>
<a href ="showDetail.do?userName=<%=url%>">数据显示</a>
这种情况下如果不进行编码转换在B页面接到的值将会产生乱码。
第一步:首先我们把“中国”进行处理后再进行传递
<%
String url = java.net.URLEncoder.encode("中国","UTF-8");
%>
经过处理后的url会以:%E9%9A...这样的形式进行传递
第二步:通过URL进行传递:
<a href ="Detail.jsp?userName=<%=url%>">数据显示</a>2· 我们在B页面或者在将要接收此URL的action做如下处理就不会有乱码发生了
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("userName");
%>
**注意:在如果是调整到具体的action时,只要按常规做法,直接设置编码格式,以及和往常一下获取传来的参数即可。
经以上处理后页面间的乱码问题可以解决了。
就是页面设置编码方式
在web.xml加上过滤器
应该就OK
当然数据库保存的两说了
<filter-name>char</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>
</filter>
<filter-mapping>
<filter-name>char</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>web.xml里面配置一下 OK了
<filter> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>filters.CharsetAllEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter>
//CharsetAllEncodingFilter .java
package filters;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;public class CharsetAllEncodingFilter implements Filter { private String encoding = null; /**
* Request.java 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的
* HttpServletRequest 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request
* 对象替换页面中的 request 对象即可.
*/ class Request extends HttpServletRequestWrapper { private String encoding = null; public Request(HttpServletRequest request) {
super(request);
encoding = CharsetAllEncodingFilter.this.encoding;
} /**
* 转换由表单读取的数据的内码. 从 ISO 字符转到 在web.xml中设置的encoding.
*/
public String toChi(String input) {
if (input == null) {
return null;
} else {
try {
byte[] bytes = input.getBytes("ISO8859-1");
return new String(bytes, encoding);
} catch (Exception ex) { }
return null;
}
} /**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
} /**
* 读取参数 -- 修正了中文问题.
*/
public String getParameter(String name) {
return toChi(getHttpServletRequest().getParameter(name));
} /**
* 读取参数列表 - 修正了中文问题.
*/
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = toChi(values[i]);
}
}
return values;
}
} public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpreq = (HttpServletRequest) request;
if (httpreq.getMethod().equals("POST")) {
request.setCharacterEncoding(encoding);
} else {
request = new Request(httpreq);
} chain.doFilter(request, response);
} public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
}}
一、像楼上各位想法一样写一个过滤器,这里就不再详述。
二、写一个类继承ActionServlet,重写service方法,在原方法基础上加上request.setCharacterEncoding("gb2312");response.setCharacterEncoding("gb2312");两句话。然后web.xml中配置自己写的这个ActionServlet而不是框架自带的,如class MyActionServlet extends ActionServlet{ @Override
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
super.service(request, response);
}
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class AllFilter implements Filter {
private String encoding;
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
} public void destroy() {
// TODO Auto-generated method stub
} public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
arg0.setCharacterEncoding(this.encoding);
arg1.setCharacterEncoding(this.encoding);
arg2.doFilter(arg0, arg1);
} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
this.encoding=arg0.getInitParameter("encoding");
}}
2.配置web.xml <filter>
<filter-name>AllFilter</filter-name>
<filter-class>com.newer.crm.web.filter.AllFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>AllFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
方法一:把spring.jar包拷到lib下,然后,web.xml里在struts2的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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
方法二:
如果struts2的版本高于2.1.6就可以在struts.xml里这样配置
<constant name="struts.i18n.encoding" value="GBK"></constant>