作者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/m.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