Tomcat 5.x 中字符集问题

本文介绍如何解决Tomcat5.x中的字符集问题,包括客户端请求编码设置、Tomcat服务器配置文件server.xml中URI编码设置及服务器端程序编码设置。
 

                                      

 

需要进行设置的一共有三个地方,1.客户端 2.tomcat 3.server端

1.客户端请求部分需要设置编码格式,假设使用http程序自动请求数据,程序示例代码如下:

将请求数据使用URLEncoder进行UTF-8编码,然后使用wr将其写到请求的数据流中

 private static InputStream httpRequest(String surl,Map attr) throws IOException{
    
  String data = "";
  InputStream is = null;
  if (attr != null) {
   Iterator it = attr.keySet().iterator();
   while (it.hasNext()) {
    String key = (String) it.next();
    data += "&" + URLEncoder.encode(key, "UTF-8") + "=" + URLEncoder.encode((String)attr.get(key), "UTF-8");
   
   }
   // Send data
         URL url = new URL(surl);
         URLConnection conn = url.openConnection();
        
         conn.setDoOutput(true);
         OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());

         wr.write(data.substring(1));
         wr.flush();
   is = conn.getInputStream();
  }else{
   URL url = new URL(surl);
   URLConnection conn = url.openConnection();
   conn.connect();
   is = conn.getInputStream();
  }

   

  return is;
 }

如果使用jsp则应当有如下内容:

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

 

2.tomcat中需要设置一定connector

在server.xml中,确认设置了编码格式

<Connector URIEncoding="utf-8" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="80" redirectPort="8443">
    </Connector>
   

3.服务器段程序需要设置编码格式,例如在servlet中,可以编写


    public void service(ServletRequest request, ServletResponse resp)
            throws ServletException, IOException {
        
                
        request.setCharacterEncoding("utf-8");

当然,服务器段一般会借助Filter来做这件事情,这样就不需要在每一个servlet中设置编码格式了,而且可以借助参数来确定使用什么样子的编码格式。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值