`
baby69yy2000
  • 浏览: 183707 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入城市...
社区版块
存档分类
最新评论

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

    博客分类:
  • SQL
阅读更多
参考网址:
http://blackwoodkane.spaces.live.com/Blog/cns!6279FA186F838628!649.entry
http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0



首先要需要了解的是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">


例子:
DirRead.jsp

<%@ 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>


DirShow.jsp
<%@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); 
%>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics