欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP 中文字符处理代码

程序员文章站 2023-11-24 08:49:04
网上处理方法一箩筐,下面说说我用过的两种有效地解决办法.1.为程序编写一个字符串处理函数,用一个静态文件保存,在需要处理中文字符的jsp页面中包含它, 复制代码 代码如下:...
网上处理方法一箩筐,下面说说我用过的两种有效地解决办法.
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>

上面两种方法都测试过了,比较好用,以后发现新的,会再更新哦~