ページの先頭行へ戻る
Interstage Application Server V12.0.0 Java EE 7 設計・構築・運用ガイド
FUJITSU Software

2.6.12 文字コード

アプリケーションで日本語などのマルチバイト文字を正確に扱うために、文字コードに関する設定をWebコンテナが提供する機能を利用して行うことができます。

設定方法や文字コードに関する注意事項は、以下を参照してください。

Webコンテナが提供する設定は、以下のように使い分けてください。

■uri-encodingを設定する場合

例:「/sample/テスト」をUTF-8でエンコードしてGETリクエストを送信する場合、リクエストURIの解析に使用するエンコーディング(uri-encoding)にUTF-8を設定します。

GET /sample/%E3%81%A6%E3%81%99%E3%81%A8  HTTP/1.1
Host: samplehost

なお、uri-encodingのデフォルト値はUTF-8です。そのため、WebブラウザがリクエストURIをUTF-8でエンコードして送信する場合は、uri-encodingは設定不要です。

WebブラウザがリクエストURIをUTF-8以外でエンコードして送信する場合、uri-encodingを設定してください。

■parameter-encodingを設定する場合

例:GETリクエストのクエリがUTF-8でエンコードされて送信される場合、parameter-encodingにUTF-8を設定します。

GET /sample/test?query=%e3%82%af%e3%82%a8%e3%83%aa  HTTP/1.1
Host: samplehost

例:POSTリクエストのBODYがUTF-8でエンコードされて送信される場合、parameter-encodingにUTF-8を設定します。

POST /sample/test HTTP/1.1
Host: samplehost
Content-Type: application/x-www-form-urlencoded
Content-Length: 34

body=%e3%82%af%e3%82%a8%e3%83%aa 

なお、クエリやBODYを読む前にjavax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)を実行すると、setCharacterEncodingに指定した値が有効になります。

また、Content-Typeヘッダにcharset属性が指定されている場合、charset属性の値が有効になります。

POST /sample/test HTTP/1.1
Host: samplehost
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 34

body=%e3%82%af%e3%82%a8%e3%83%aa 

このように、アプリケーションで文字コードの設定をしている場合は、parameter-encodingの設定は不要です。

■fileEncodingを指定する場合

fileEncodingは、サーブレットやJSPから静的リソース(htmlやtxtファイルなど)にディスパッチした場合に、静的リソースを表示するために使用されます。

例:JSPファイルでtxtファイルをincludeする場合、txtファイルのエンコードをfileEncodingで指定します。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.net.URLClassLoader, java.net.URL" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <jsp:include page="sample.txt" flush="true" />
</body> </html>