[問題] Servlet接收HTML傳入值時亂碼處理(解決)

看板java作者 (達人)時間10年前 (2015/03/26 22:57), 10年前編輯推噓4(405)
留言9則, 6人參與, 最新討論串1/1
各位先進晚安~ 小弟最近在做留言版的練習(使用Web Servlet) 在Html寫入要留言的訊息後交由Controller接收時 從request印出接收到的資訊,發現讀出的資料變成了亂碼(後面寫入DB也自然成了亂碼) 在網路上查了一些解決方法(String轉碼、utf-8等等),似乎都沒有起做用 想要請問各位是否也有碰過這種問題,請問先進們是如何處理的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.145.96 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1427381837.A.A07.html

03/26 23:29, , 1F
res.setContentType("text/html;charset=UTF-8);試試看
03/26 23:29, 1F
這個有試過了~

03/26 23:35, , 2F
文章代碼: #1Kduszi4
03/26 23:35, 2F

03/26 23:35, , 3F
或是15125篇
03/26 23:35, 3F
Eclipse和DB、JSP都有做調整了,但是還是亂碼><

03/27 16:38, , 4F
request.setCharacterEncoding("utf-8");
03/27 16:38, 4F

03/27 18:19, , 5F
http://goo.gl/KLsE53 不見得是這個問題,不過可以試試
03/27 18:19, 5F
謝謝各位先進的解答,剛剛自己開新的專案後用以下的寫法,接的資訊就可以正常顯示了 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);

03/27 22:12, , 6F
不就我那行
03/27 22:12, 6F
我之前只有做doPost,後來加上了doGet的方法這樣~

03/29 15:25, , 7F
如果要用doGet接收還要再轉一次才不會亂碼
03/29 15:25, 7F
大大不好意思,我不太懂你說再轉一次的意思,能否說明一下? 我在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

03/31 22:26, , 8F
就是你form用get送的時候req.setCharacterEncoding是不夠
03/31 22:26, 8F

03/31 22:27, , 9F
的 要再做處理 不過某些容器實作會自動幫你轉 所以要小心
03/31 22:27, 9F
文章代碼(AID): #1L51vDe7 (java)
文章代碼(AID): #1L51vDe7 (java)