锁定老帖子 主题:令人恼火的UTF-8中文问题
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-27
在Tomcat 5.5中,我写了个Servlet,希望能读取在URL中的中文数据,如:http://localhost:8080/csj/ch04/testServlet?name=牛人,结果竟得到的是一堆乱码,于是查完所有google,baidu,找到一些网上的解决方法,结果还是不行,大家教教我该怎么做? 我的做法是这样的: 在tomcat中,修改:conf/server.xml,把<Connector....>中加入URIEncoding="UTF-8", 然后在Servlet的doGet,doPost最前面加入: request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); 但是在输出name变量时却是乱码,为什么?下面是我的代码: //ServletUtils是输出Html的工具类,已包含 //<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> public class GetParameterServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); ServletUtilities util = new ServletUtilities(out); String name = request.getParameter("name"); String sex = request.getParameter("sex"); String content = "name: " + name + "<br>\n"; content += "sex: " + sex + "<br>\n"; content += "charset: " + request.getCharacterEncoding() + "<br>\n"; content += "<a href=\"?sex=我\">next</a>"; String title = "Get parameter test"; util.print(title, content); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } } 网上很多人都说这样的方法可以行得通,可是我却行不通,是不是我做漏了哪一步了? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-27
http://localhost:8080/csj/ch04/testServlet?name=牛人
你通过url直接写当然不行 这里的“牛人” 是gbk编码, 专程utf-8当然是乱马 |
|
返回顶楼 | |
发表时间:2006-10-27
那该怎么做啊?
|
|
返回顶楼 | |
发表时间:2006-10-27
IE不是以UTF-8格式上传请求的吗?
|
|
返回顶楼 | |
发表时间:2006-10-27
通过页面输入。。
|
|
返回顶楼 | |
发表时间:2006-10-27
我在页面里加入<a href="http://localhost:8080/csj/ch04/testServlet?name=牛人">next</a>,这样的方式也不行。
|
|
返回顶楼 | |
发表时间:2006-10-27
把连接中中文通过转换成另一种编码
就是用%的那种,就没问题了(好像叫什么base64什么的) |
|
返回顶楼 | |
发表时间:2006-10-27
这是一种方法,但是有没有别的方法呢?
|
|
返回顶楼 | |
发表时间:2006-10-27
POST or new String(name.getBytes("ISO-8859-1"),"UTF-8")
|
|
返回顶楼 | |
发表时间:2006-10-27
直接一个filter么,好了
|
|
返回顶楼 | |