ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

F.5.1 文字エンコーディングを制御したい

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を指定してください。

関連項目