问题描述
通过Get方式提交参数,url:http://localhost:8080/aaaa/light?nick="aaa"&mobile=""&prov="江西"&city="景德镇"&game="对对碰"Servlet里面的doGet代码:String nick = new String(req.getParameter("nick").getBytes("ISO-8859-1"),"UTF-8");String mobile = new String(req.getParameter("mobile").getBytes("ISO-8859-1"),"UTF-8");String prov = new String(req.getParameter("prov").getBytes("ISO-8859-1"),"UTF-8");String city = new String(req.getParameter("city").getBytes("ISO-8859-1"),"UTF-8");String game = new String(req.getParameter("game").getBytes("ISO-8859-1"),"UTF-8");LightMap lm = new LightMap();lm.insertLightRecord(nick, prov, city, game, mobile);数据库采用的是utf8编码。如果将Servlet的doGet代码改成String mobile = new String(req.getParameter("mobile").getBytes("ISO-8859-1"),"GBK");那么这个字段中文就不会乱码请问哪位能帮帮我。谢谢!
解决方案
你应该用的是IE浏览器吧,IE默认是用gdk编码的,即使你指定用UTF-8方式发送,而服务器端用的是ISO8859-1解码的所以1.String mobile = new String(req.getParameter("mobile").getBytes("ISO-8859-1"),"GBK"); mobile在内存中用eclipse看到是中文 而与数据库打交道,就需要看服务器端与数据库编码转换
解决方案二:
你在servlet中输入这个试试request.setcontentType("Text/html;charset=utf-8")