Tomcat下byte[]转String出现乱码问题

来源:互联网 发布:网络女主播直播间 编辑:程序博客网 时间:2024/06/03 15:24

Java Web课程老师给我们发了一份实验指导书,上面有一个示例程序是这样的:

<%@ page contentType="text/html;charset=gb2312"%><%!public String codeToString(String str){//处理中文字符串的函数  String s=str;  try    {    byte tempB[]=s.getBytes("ISO-8859-1");    s=new String(tempB);    return s;}catch(Exception e){  return s;}}%><html><head><title>接收新用户注册</title></head><body>这是新用户注册所提交的数据:<br>用户名是:<%=codeToString(request.getParameter("username"))%><br>密码是:<%=codeToString(request.getParameter("userpassword"))%><br>性别是:<%=codeToString(request.getParameter("sex"))%><br>出生年月是:<%=request.getParameter("year")+request.getParameter("month")+request.getParameter("day")%><br>电子邮箱是:<%=request.getParameter("email")%><br>家庭住址是:<%=codeToString(request.getParameter("address"))%><br></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                           

就是接收表单信息,然后显示。但是在页面显示的时候,参数是中文的部分出现了乱码。
然后上网查了原因,在这里总结一下:
我们知道:tomcat默认的编码格式是ISO-8859-1,是一种不兼容中文的编码格式。
我们使用request.getParameter()方法接收表单信息或是数据库的信息的时候属于一种后台操作,所以我们的时候也要使用ISO-8859-1的格式去接收(如果是其他编码格式,则会出现乱码,如果省略后面的编码格式,编码格式为操作系统默认的编码格式),所以byte tempB[]=s.getBytes("ISO-8859-1");这一句并没有错,错就错在s=new String(tempB);没有显式指明转换的编码格式,而是使用默认的编码格式,即操作系统默认的编码格式,服务器系统一般为英文系统,所以系统默认的编码格式是无法解析中文的。把它改为s=new String(tempB,"utf-8") 即可。

阅读全文
0 0
原创粉丝点击