TypechoJoeTheme

香草物语

统计
登录
用户名
密码
/
注册
用户名
邮箱
输入密码
确认密码

jsp中文乱码问题

Laughing博主
2019-05-05
/
0 评论
/
1,068 阅读
/
565 个字
/
百度已收录
05/05
本文最后更新于2020年09月25日,已超过1455天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

初学JSP,尤其是Tomcat环境,经常会因为中文汉字字符集设置问题导致中文乱码,本文就这一问题提出解决方案,解决中文乱码问题,供各位参考,我采用的方案是统一字符集至UTF-8,同时避免GB2312所带来的中文字符集不够用的隐患,需注意的地方有三点,默认情况下是英文字符集。

  1. Tomcat 的 server.xml 文件,设置服务器端口工作方式
  2. Servlet 和 JavaBean 对字符串字符集处理的统一
  3. JSP页面的字符集统一

完成这三点统一,中文想乱码都难,如果使用MySQL的话,数据表也需要做UTF-8统一。

修改Tomcat的server.xml文件,该文件位于 tomcat/conf,红色部分为添加部分,也就是当前使用的HTTP端口的连接方式的设置。

找到Connector 标签,使 Tomcat 服务器以UTF-8模式进行工作,从底层对乱码进行处理,修改如下:

<Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1"  
               connectionTimeout="20000"  
               redirectPort="8443" /> 

运行代码内设置如下:
JavaBean 和 Servlet 内需要处理中文的地方之前,或者所有函数最前端加上

request.setCharacterEncoding ("UTF-8");  
response.setCharacterEncoding ("UTF-8");

避免在 JavaBean 和 Servlet 内出现汉字乱码。
JSP代码中的 JAVA 字符编码设置,在页面上对乱码进行处理。

<%@page contentType="text/html"%>  
<%@page pageEncoding="UTF-8"%>

红色为制定JSP处理字符采用UTF-8编码处理方式。

<div class="dp-highlighter nogutter"><div class="bar"></div><ol start="1" class="dp-j"><li class="alt"><span><span>&lt;%request.setCharacterEncoding&nbsp;(</span><span class="string">"UTF-8"</span><span>);%&gt;&nbsp;&nbsp;</span></span></li></ol></div>

JSP内JAVA代码设定接收参数为UTF-8编码
JSP 内 HTML 头的编码设置,页面处理以UTF-8,避免显示乱码。

<form action=index.jsp method="post"><h3>Please Input Your Name:</h3>  
<input type="text" size="30" name="中文名字" value="" >  
<input type=submit  value="提交">  
</form>

接收代码如下:

<%  
// 通过二进制传递的参数,因为UTF-8的设置,无须转换,直接中文操作,而不会出现乱码。  
String temp1 = request.getParameter ("yourname");  
……  
%>

采用get方式略有不同,若只采用以上设定,遇中文参数,因编码不同,会导致部分文字信息丢失,所以在提交前务必进行编码,这里用到两个函数java.net.URLDecoder.decodejava.net.URLDecoder.encode,分别是编码和解码。

<a href=" 
<%=request.getContextPath()%>/index.jsp?传递的参数名= 
<%=java.net.URLEncoder.encode (传递的汉字变量,"UTF-8")%>">  
<%=超链接热点显示内容%>  
</a>

作为参数传递的中文,由 java.net.URLEncoder.encode函数将要发送的变量解析为16进制数字编码,进行URL传递,接收代码如下:

<%String str = request.getParameter ("传递的参数名");%>  

由此,获得参数后的 str 内将是正确的中文信息,完全避免了乱码的显示。
可用 java.net.URLDecoder.decode 函数
例如

<%  
  String str1 = java.net.URLDecoder.decode(request.getParameter("传递的参数名"),"UTF-8");  
%>
朗读
赞(1)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

香草物语

本文链接:

https://www.xiangcaowuyu.net/java/chinese-scrambling-in-jsp.html(转载时请注明本文出处及文章链接)

评论 (0)
  1. yangyyy 闲逛
    Windows Vista · Opera

    谢谢博主

    2020-04-15 回复
  2. Ju 闲逛
    MacOS · Google Chrome

    很好啊,感谢

    2019-08-23 回复