JSPの基礎知識 |
|
JSPで日本語を含むコンテンツを作成する場合、pageタグに記述するエンコーディングの指定に注意が必要です。
JSP1.1の仕様では、pageタグのcontentTypeに指定するエンコーディングと同じエンコーディングでJSPのファイルを作成することが規定されています。
JSPコンパイラはcontentTypeに指定されたエンコーディングをJSPファイルのエンコーディングと理解しUnicodeの文字列に変換します。よって、出力エンコーディングとJSPの作成に使用したエンコーディングが異なると文字化けが起こります。
例えば、Windows上の通常のエディタで以下のようなJSPを作成し動作させた場合、文字化けが起こります。
<%@ page contentType="text/html;
charset=ISO-2022-JP" %> |
このJSPはWindows上で作成されたので、SJISでエンコードされていますが、pageタグに指定されたエンコーディングはISO-2022-JPです。JSPコンパイラはこのJSPに記述された文字列をISO-2022-JPでエンコードされた文字列だと判断しUnicodeに変換します、しかし、実際にはSJISでエンコードされている文字列なので、この変換時に文字化けが起きてしまうわけです。
ところで、出力エンコード形式のデフォルト値は ISO-8859-1(ラテン文字)なので、pageタグを指定しないで日本語を扱ったJSPを作成した場合も文字化けします。
こういった文字化けを防ぐためには、Windows上などで作成したSJIS形式のJSPファイルにはcharset=Shift_JIS、Linux上などで作成したEUC_JP形式のJSPファイルにはcharset=EUC_JPというように、pageタグに指定するエンコーディングを、作成するファイルのエンコーディングに合わせることが必要です。
ただし、例えばLinux上で実行するためには必ずEUC_JPを指定しなければいけないというわけではなく、pageタグに指定したエンコーディングと、JSPファイル自体のエンコーディングが統一されていれば、Windowsで作成したSJISでエンコードされたJSPを、エンコード形式の変更なしにLinuxなどのほかのOS上で動作させても文字化けは起こりません。
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|