作者MagicPaul (达人)
看板java
标题[问题] Servlet接收HTML传入值时乱码处理
时间Thu Mar 26 22:57:10 2015
各位先进晚安~
小弟最近在做留言版的练习(使用Web Servlet)
在Html写入要留言的讯息後交由Controller接收时
从request印出接收到的资讯,发现读出的资料变成了乱码(後面写入DB也自然成了乱码)
在网路上查了一些解决方法(String转码、utf-8等等),似乎都没有起做用
想要请问各位是否也有碰过这种问题,请问先进们是如何处理的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.235.145.96
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1427381837.A.A07.html
1F:→ ht5603: res.setContentType("text/html;charset=UTF-8);试试看 03/26 23:29
这个有试过了~
3F:→ cyclone350: 或是15125篇 03/26 23:35
Eclipse和DB、JSP都有做调整了,但是还是乱码><
4F:→ Kennyq: request.setCharacterEncoding("utf-8"); 03/27 16:38
谢谢各位先进的解答,刚刚自己开新的专案後用以下的写法,接的资讯就可以正常显示了
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp); //新增doGet值转给doPost执行
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
// super.doPost(req, resp);
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String userName = req.getParameter("userName");
String eMail = req.getParameter("eMail");
String data = req.getParameter("data");
System.out.println("输入的讯息:" + data);
6F:→ Kennyq: 不就我那行 03/27 22:12
我之前只有做doPost,後来加上了doGet的方法这样~
7F:推 jay80915: 如果要用doGet接收还要再转一次才不会乱码 03/29 15:25
大大不好意思,我不太懂你说再转一次的意思,能否说明一下?
我在JSP的部份有做<form method="post" action="message.do">
==============================================================
我最後在做R、W DB时,因为原先用的版本比较旧
後来换成mysql-connector-java-5.1.35之後读写就都正常了~
※ 编辑: MagicPaul (36.232.143.1), 03/31/2015 22:26:08
8F:推 haha02: 就是你form用get送的时候req.setCharacterEncoding是不够 03/31 22:26
9F:→ haha02: 的 要再做处理 不过某些容器实作会自动帮你转 所以要小心 03/31 22:27