java 中文乱码 总结

1.JavaScript 传参乱码

2.JSP与页面参数传参乱码

3.链接传参乱码

4.数据库读取乱码

5.Java与文件/流之间的乱码

本文转自:http://ykko2009.blog.163.com/blog/static/183199124201132713656163/

 

======================  华丽丽的分割线  ======================

   

1.JavaScript 传参乱码

 

在浏览器端对要传递的中文参数进行编码处理.代码如下: 
 
 xmlhttp.open("POST",url,true); //请求参数初始化 
 xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因为请求方式为POST,所以这里要设置请求头.(如果请求方式为GET,此句代码可以省略) 
 xmlhttp.send("name="+encodeURI(encodeURI("星期日"))); //向服务器端发送参数 

 在服务器端代码: 页面jsp保证是utf-8编码

   
   
PrintWriter out = response.getWriter(); // 得到response的输出流对象 String name1 = request.getParameter( " name " ); // 得到KEY为"name"的请求参数 String name = URLDecoder.decode(name1, " utf-8 " ); // 对得到的参数进行解码 out.print(name); // 向浏览器端发送数据

 

 

======================  华丽丽的分割线  ======================

 

2.JSP与页面参数传参乱码

 

JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("UTF-8") 。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置response.setContentType("text/html;charset=UTF-8")。JSP页面乱码通常只要在页面开始地方用上面代码指定字符集编码即可。如果还不行,那么请用下面这句话来转换 str=new String(str.getBytes("ISO-8859-1"),"页面编码方式"); 

 

======================  华丽丽的分割线  ======================

 

3.链接传参乱码

 

在传参的jsp对中文进行编码:href="new.jsp?name=java.net.URLEncoder.encode("链接")";

在接受的jsp对中文进行转码:String str = URLDecoder.decode(request.getParameter("name "), "utf-8");

 

======================  华丽丽的分割线  ======================

 

4.数据库读取乱码

 

大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如mysql驱动:jdbc:mysql://localhost/MYAPPS?useUnicode=true&characterEncoding=GBK。

 

======================  华丽丽的分割线  ======================

 

5.Java与文件/流之间的乱码

 

Java读写文件最常用的类是FileInputStream / FileOutputStream和FileReader / FileWriter。其中FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建议使用基于字符的FileReader和FileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码。在这种情况下,建议使用FileReader和FileWriter的父类:InputStreamReader / OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值