客户端和服务器编码问题
来源:互联网 发布:union all 不同数据库 编辑:程序博客网 时间:2024/05/21 08:38
request 请求
request请求:
post:
request.setCharacterEncoding(“utf-8”);
get(tomcat8和以上的不需要处理):
Stringuname=request.getParameter(“uname”);
uname=new String(uname.getBytes(“ISO-8859-1”),”UTF-8”);
//把传入的中文解码成ISO-8859-1,然后转成utf-8编码
Request.setAttribute(“unmae”,uname);
//把转成utf-8的uname有放到requst中传过去给servlet
response响应:
response.setCharacterEncoding("UTF-8");//告知服务器
response.setHeader("content-type","text/html;charset=UTF-8"); //告知客户端
以上两句可以合并成一句response.setContentType("text/html;charset=UTF-8");
代码
public class CharSetFilter implements Filter {
public void destroy() {
}
// 过滤方法,在这个方法中我们要对请求和响应进行处理
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
resp.setContentType("text/html;charset=UTF-8");
System.out.println("dofilter....");
// 根据不同的情况进行不同的处理
// 请求方式, 服务器版本
String method = req.getMethod();
// 得到服务器版本
String serverInfo = req.getServletContext().getServerInfo(); // Apache Tomcat/8.0.23
if("POST".equalsIgnoreCase(method)){
req.setCharacterEncoding("UTF-8");
chain.doFilter(req, resp);
}else{
int start = serverInfo.indexOf("/");
serverInfo = serverInfo.substring(start+1, start+1+1);
System.out.println(serverInfo);
int version = Integer.parseInt(serverInfo);
if(version<8){
/*String str = req.getParameter("name");
str = new String(str.getBytes("ISO-8859-1"),"UTF-8");*/
MyRequestWrapper myreq = new MyRequestWrapper(req);
chain.doFilter(myreq, resp);
}else{
chain.doFilter(req, resp);
}
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
class MyRequestWrapper extends HttpServletRequestWrapper{
HttpServletRequest req = null;
public MyRequestWrapper(HttpServletRequest request) {
super(request);
req = request;
}
@Override
public String getParameter(String name) {
String temp = req.getParameter(name);
if(temp!=null){
try {
temp = new String(temp.getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return temp; // 正常的字符串了
}
}
- 客户端和服务器编码问题
- 服务器和客户端的编码问题
- 解决oracle服务器和客户端编码不匹配的问题
- 解决客户端浏览器和服务器交互的编码问题详解
- Base64编码在客户端与服务器传值问题
- Oracle 服务器 客户端 US7ASCII、 UTF8字符编码问题
- 对于客户端和服务器bind问题
- java客户端和vc程序通信时的编码问题
- 用Tcpdump定位服务器和客户端通信问题
- zookeeper客户端 和服务器连接时版本问题
- android 连接服务器和客户端 这是什么问题
- ZooKeeper客户端 和服务器连接时版本问题
- zookeeper客户端 和服务器连接时版本问题
- 安卓客户端和服务器乱码的问题
- java Socket编程 服务器和客户端执行的顺序问题
- ZooKeeper客户端 和服务器连接时版本问题
- js解决服务器和客户端存在时间差的问题
- zookeeper客户端 和服务器连接时版本问题
- c/c++结构体与结构体指针
- 【数论-莫比乌斯】bzoj 2301 莫比乌斯+容斥
- Trie(字典树)的Java实现
- Cocoapods安装中出现的问题解决
- Oracle总结
- 客户端和服务器编码问题
- hdu 6069 统计区间约数的个数 2017 Multi-University Training Contest
- javaweb Filter的使用方法以及配置xml文件
- Android的LocalSocket实现及SELinux权限设置.编译(应用层和native通信)
- JQ AJAX 调用后台方法--
- php面向对象__toString() 用法详解
- php 打印空心金字塔
- 百度地图之判断标注点是不是在所画的圆形中
- Android应用的启动时间