Javaでは文字エンコーディングとしてUnicodeを使用するのに対して、ブラウザに表示するHTMLでは、シフトJIS、日本語EUCなどが使用されます。そのため、JSPの実行時には文字エンコーディングの変換が行なわれます。同様に、ブラウザから送信されるリクエストでは、シフトJIS、日本語EUCなどが使用されるため、リクエストの内容をJavaの文字列に変換するときに文字エンコーディングの変換が行なわれます。これらの変換が正確に実行できるように、文字エンコーディングを指定する必要があります。
表示に使用する文字エンコーディングを指定する
表示に使用する文字エンコーディングは、JSPに記述するpageディレクティブで指定します。
<%@ page contentType= "text/html; charset=Shift_JIS" %>
charset= の直後に文字エンコーディングを指定します。この例のように"Shift_JIS"を指定するとシフトJISが使用されます。他の日本語の文字エンコーディングとしては、"windows-31j" (WindowsのシフトJIS), "EUC-JP" (日本語EUC), "UTF-8" (Unicode) などがあります。
参考
文字エンコーディング"Shift_JIS"の実態はプラットフォームにより異なります。丸付き数字などWindows固有の文字コードを使用する場合は、"windows-31j"を指定してください。 "MS932"は"windows-31j"の別名として使用できます。
ディレクティブ
ディレクティブはJSPがJavaに変換されるときに使用される情報を指定します。page, taglib, includeなどのディレクティブがあります。ディレクティブは <%@ と %> で囲んで記述します。
pageディレクティブのcontentTypeは、表示に使用する文字エンコーディングと、JSPファイルで使用している文字エンコーディングの両方を指定するのに使われます。そのため、上記のように"Shift_JIS"を指定した場合は、JSPファイル自身もシフトJISで作成されている必要があります。
リクエストに使用するエンコーディングを指定する
Apcoordinatorは、ブラウザから送信されるリクエストの文字エンコーディングを、JavaのエンコーディングJISAutoDetectを使用して自動判定します。ただし、シフトJISと日本語EUCの両方に存在するコードが使用された文字列などは、正確に判定できない場合があります。
リクエストに使用されている文字エンコーディングを明示的に指定するには、Apcoordinatorの初期化パラメタuji.defaultEncodingで指定します。初期化パラメタはWebアプリケーション環境定義ファイル(web.xml)に記述します。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns=http://java.sun.com/xml/ns/j2ee xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd version="2.4"> <context-param> <param-name>factory</param-name> <param-value>sample2.Sample2Factory</param-value> </context-param> <context-param> <param-name>uji.defaultEncoding</param-name> <param-value>Shift_JIS</param-value> </context-param> <jsp-config> <taglib> <taglib-uri>uji-taglib</taglib-uri> <taglib-location>/WEB-INF/ujiall.tld</taglib-location> </taglib> </jsp-config> </web-app>
以下の場合は、uji.defaultEncodingにnoneを指定してください。
サーブレットコンテナで文字エンコーディング行う場合
関連項目
APIリファレンスのApplicationProfileクラス
UJIタグリファレンス