Tomcat5.5 UTF-8 乱码问题解决办法

[size=medium]参考网址:
[url]http://blackwoodkane.spaces.live.com/Blog/cns!6279FA186F838628!649.entry[/url]
[url]http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0[/url][/size]


[size=medium]首先要需要了解的是web容器默认编码是iso-8859-1,一个汉字占用两个字节,而在utf-8中一个汉字占用三个字节。所以在数据传递过程中,必须手动设定容器编码格式,否则会出现字符位丢失的情况。即3个字节变为两个字节,自然会变成乱码。

第一步,修改tomcat。
找到对应站点的server.xml后,在里面的Connector标签里面添加
useBodyEncodingForURI="true"
这句的话告诉tomcat用页面的编码去处理post

在JSP页面加上这两句
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">[/size]

[size=medium]例子:
DirRead.jsp[/size]

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.net.*,java.io.*" %>

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%

//依您電腦,請修改目錄
File fp = new File("C:\\");
File[] f2 = fp.listFiles();
%>
<form method="post">
<table border="01" cellpadding="2" cellspacing="0">
<% //for( int i=0 ; i<file_list.length ; i++ ){
for( int i=0 ; i<f2.length ; i++ ){
%>
<tr>
<td><%=f2[i].getName() %></td>
<td><a href="DirShow.jsp?filename=<%= java.net.URLEncoder.encode(f2[i].getName(),"UTF-8") %>">link</a></td>
</tr>
<% } %>
</table>
</form>
</BODY>
</HTML>


[size=medium]DirShow.jsp[/size]

<%@page contentType="text/html; charset=UTF-8" %>
<%@page import="java.util.*" %>
<%@page import="java.io.*" %>

<%
request.setCharacterEncoding("UTF-8");
String filename = request.getParameter("filename");
out.println("選取檔案: " + filename);
%>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值