前两天 遇到了个比较烦人的问题:ajax 传汉字到后台 火狐不用转码 ie 谷歌需要转吗:
解决办法是 根据浏览器传过来的head 里的 user-agent 不同分别处理 ,主要是对火狐 特别处理
user-agent 列表
ie:
User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
火狐:
User-Agent: Mozilla/5.0 (Windows NT 6.2; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
谷歌:
User-Agent:
Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
opera:
User-Agent: Opera/9.80 (Windows NT 6.2; U; Edition IBIS; zh-cn) Presto/2.10.229 Version/11.61
只要判断 User-Agent: 中是否包含Firefox
就行了。
jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script type="text/javascript" src="lib/jquery-1.7.1.js"></script>
<script type="text/javascript" >
$.post("S", {name:"张三"}, function(data){alert(data)},"text")
</script>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
servlet:
package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "S", urlPatterns = {"/S"})
public class S extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String s = request.getHeader("user-agent");
String name = request.getParameter("name");
System.out.println();
if (!s.contains("Firefox")) {
name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
}
System.out.println(name);
try {
out.println(name);
} finally {
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}