きときと - Java - TomcatEncoding - 3.2.4

Tomcat3.2.4(及び)において、クライアントの文字コードを指定する方法です。

サンプルのダウンロード tomcat-encoding_3_2_4.lzh

Tomcat3.2.xはコンテナ自身にはクライアントエンコーディングを指定する機能がないため、
明示的に文字コード変換を行う必要があります。

ここで、別途説明している 文字コード変換クラス を使います。

動作確認のため、次の index.html と ja324.jsp を使います。ソースはもちろんShift_JISで保存してください。

index.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>Tomcat3.2.4</title>
</head>
<body>
<form action="ja324.jsp" method="get">
名前(日本語で): <input type="text" name="name" value="日本語">
<input type="submit" value="送信">
</form>
</body>
</html>




ja324.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%
Encoding sjis = Encoding.getEncoding("Shift_JIS");
//文字コード変換
String name = sjis.getString(request.getParameter("name"));
//コンソールに出力する
System.out.println("name: " + name);
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
</head>
<body>
<%-- ブラウザに出力する --%>
名前: <b><%= name %></b>
</body>
</html>
文字コード変換クラスを使うことで、簡潔な記述が可能です。




文字コード変換をしない場合は下のように文字化けします。




各ファイルの配置は以下のようになります。(簡単のため、package指定は外してあります。)
+ webapps/
+ nihongo324/
index.html
ja324.jsp
+ WEB-INF/
web.xml
+ classes/
Encoding.java
Encoding.class






補足
javax.servlet.http.HttpServletRequestインターフェースを実装したRequestのラッパークラスを作れば
3.3や4.0.3と同様に、明示的に文字コードを指定する必要はなくなります。
ここではより簡単な方法を採用しています。

request.getParameter()の繰り返しも冗長であるので、実際の開発時にはそれらをラップしたクラスを作ることもあります。


ご意見・ご感想は メール kito@kun.ne.jp か掲示板 http://6005.teacup.com/kitobbs/bbs で。

LastUpdate: 2002/03/22