您正在使用 IPV4 [44.200.101.170] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会       悟空收录网      

【腾讯云】 爆款2核2G3M云服务器首年 61元,叠加红包再享折上折      
[公益] 地球是我家,绿化靠大家      
2024年 清明节 007
2024年 劳动节 034
2025年 元 旦 279
2025年 春 节 307
 
您现在的位置:首页 >> JSP >> 内容
本类新增
本类热门
JSP中文字符乱码处理的2种方法
内容摘要: 在编写JSP程序时,常常会碰到中文字符处理的问题,在接受request的中文字符时显示出来一串乱码。网上处理方法一箩筐,下面说说我用过的两种有效地解决办法: 1.为程序编写一个字符串处理函数,用一个静态文件保存,在需要处理中文字符的JSP页面中包含它, %! public String codeToString(String str) { String......

在编写JSP程序时,常常会碰到中文字符处理的问题,在接受request的中文字符时显示出来一串乱码。网上处理方法一箩筐,下面说说我用过的两种有效地解决办法:


1.为程序编写一个字符串处理函数,用一个静态文件保存,在需要处理中文字符的JSP页面中包含它,


<%!

public String codeToString(String str)

{

String s=str;

try

{

byte temp[]=s.getBytes("ISO-8859-1");

s=new String(temp);

return s;

}

catch(Exception e)

{

return s;

}

}

%>


要转换时只需:coedeToString(request.getParameter(..));就可以了,很好用的。


2.一种普遍适用的方法,加一个过滤器,之后就可以过上一劳永逸的日子了。


package filters;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

public class TomcatFormFilter implements Filter {

/**

* Request.java

* 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所

有的 HttpServletRequest

* 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只

需要用新的 Request 对象替换页面中的

* request 对象即可.

*/

class Request extends HttpServletRequestWrapper

{

public Request(HttpServletRequest request) {

super(request);

}

/**

* 转换由表单读取的数据的内码.

* 从 ISO 字符转到 GBK.

*/

public String toChi(String input) {

try {

byte[] bytes = input.getBytes("ISO8859-1");

return new String(bytes, "GBK");

}

catch (Exception ex) {

}

return null;

}

/**

* Return the HttpServletRequest holded by this object.

*/

private HttpServletRequest getHttpServletRequest()

{

return (HttpServletRequest)super.getRequest();

}

/**

* 读取参数 -- 修正了中文问题.

*/

public String getParameter(String name)

{

return

toChi(getHttpServletRequest().getParameter(name));

}

/**

* 读取参数列表 - 修正了中文问题.

*/

public String[] getParameterValues(String name)

{

String values[] =

getHttpServletRequest().getParameterValues(name);

if (values != null) {

for (int i = 0; i < values.length; i++) {

values[i] = toChi(values[i]);

}

}

return values;

}

}

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse

response,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpreq = (HttpServletRequest)request;

if(httpreq.getMethod().equals("POST")) {

request.setCharacterEncoding("GBK");

} else {

request = new Request(httpreq);

}

chain.doFilter(request, response);

}

public void init(FilterConfig filterConfig) throws

ServletException {

}

}

当然要记得改下web.xml


<filter>

<filter-name>TomcatFormFilter</filter-name>

<filter-class>filters.TomcatFormFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>TomcatFormFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>


上面两种方法都测试过了,比较好用

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:jsp 实现在线人数统计

 

下一篇:JSP Sessions

发布日期:2021/6/15
手机扫二维码直达本页
发布时间:12:34:56
点  击:6
录  入:壹家怡园
相关文章
Baidu
YiJiaCMS 7.3.8 build231228(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....