admin 管理员组文章数量: 887018
2024年1月10日发(作者:openstack安装部署工具)
Java乱码是因为Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。在这里,总结一下java乱码的一些常见情况
ript传参乱码:
在浏览器端对要传递的中文参数进行编码处理.代码如下:
("POST",url,true); //请求参数初始化
uestHeader("Content-Type","application/x-www-form-urlencoded"); //因为请求方式为POST,所以这里要设置请求头.(如果请求方式为GET,此句代码可以省略)
("name="+encodeURI(encodeURI("星期日"))); //向服务器端发送参数
在服务器端代码:
页面jsp保证是utf-8编码
<%@ page contentType="text/html; charset=GBK"%>
接受中文参数
PrintWriter out = ter(); //得到response的输出流对象
String name1 = ameter("name"); //得到KEY为"name"的请求参数
String name = (name1,"utf-8"); //对得到的参数进行解码
(name); //向浏览器端发送数据
与页面参数之间的乱码
JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:racterEncoding("UTF-8") 。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置tentType("text/html;charset=UTF-8")。
JSP页面乱码通常只要在页面开始地方用上面代码指定字符集编码即可。如果还不行,那么请用下面这句话来转换 str=new String(es("ISO-8859-1"),"页面编码方式");
3.热链接传参乱码
在传参的jsp对中文进行编码:href="?name=("链接")";
在接受的jsp对中文进行转码:String str =
(ameter("name "), "utf-8");
与数据库之间的乱码
大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如mysql驱动:jdbc:mysql://localhost/MYAPPS?useUnicode=true&characterEncoding=GBK。
5Java与文件/流之间的乱码
Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。其中FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建议使用基于字符的FileReader和FileWriter,省去了字节与字符之间的转换。但这
两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码。在这种情况下,建议使用FileReader和FileWriter的父类:InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream
out, Charset cs)。
版权声明:本文标题:java中文乱码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1704831582h463503.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论