分享

servlet乱码解决一则&将request参数按字符串取出

 muyable 2014-09-18

修改文本格式,编码格式大家都懂得。

需要注意的是response在getWritter之前设定setContentType才能使PrintWriter正确。

类似的我遇到一个问题,文本格式,编码格式都统一为GBK了,使用request.getParameter(“”)是可以得到正确的中文的,但是如果使用request.getReader(),将所有参数转化成字符串(我为了接收整个json来转化用的),字符串中得中文就是乱码的。于是我想依照刚才的样子request.setCharsetEncoding("GBK")。还是乱码。

后来看到好多java库默认是用utf8操作字符串的,就想是不是BufferReader用的字符不一样,于是request.setCharsetEncoding("utf8");,ok了。

我将所有的文本格式编码格式都改成utf8,中文依然ok的。


然后另一个问题就是存到mysql中,我用cmd一看,还是乱码。。修改了my.ini里面default-character-set=utf8,还是不行,修改了client字符编码还是不行,不过读取过来在servlet里倒是正确的中文。应该是只要连接数据库的时候设定好是以什么编码访问(jdbc:mysql://localhost:3306/kiln?characterEncoding=utf8),那读取就是一致的,结果就没有乱码问题。至于cmd中为什么显示不出来,还是不知道。


附将request参数按字符串取出代码

  1. public class JSONManager {  
  2.      public static String readJSONString(HttpServletRequest request){  
  3.             try {  
  4.                 request.setCharacterEncoding("utf8");                 
  5.             } catch (UnsupportedEncodingException e1) {               
  6.                 e1.printStackTrace();  
  7.             }  
  8.             StringBuffer json = new StringBuffer();  
  9.             String line = null;  
  10.             try {  
  11.                 BufferedReader reader = request.getReader();                  
  12.                 while((line = reader.readLine()) != null) {  
  13.                     json.append(line);                    
  14.                 }                 
  15.             }  
  16.             catch(Exception e) {  
  17.                 System.out.println(e.toString());  
  18.             }  
  19.             return json.toString();  
  20.         }  
  21. }  


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多