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

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

需要注意的是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参数按字符串取出代码

public class JSONManager {
	 public static String readJSONString(HttpServletRequest request){
		 	try {
				request.setCharacterEncoding("utf8");				
			} catch (UnsupportedEncodingException e1) {				
				e1.printStackTrace();
			}
	        StringBuffer json = new StringBuffer();
	        String line = null;
	        try {
	            BufferedReader reader = request.getReader();	            
	            while((line = reader.readLine()) != null) {
	                json.append(line);	                
	            }	            
	        }
	        catch(Exception e) {
	            System.out.println(e.toString());
	        }
	        return json.toString();
	    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值