トップ 一覧 ping 検索 ヘルプ RSS ログイン

文字化けの対処の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!Webアプリケーションでの文字化けの対処
{{category 文字化け}}

*[Microsoftコードページ932|http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932]
*[Unicode|http://ja.wikipedia.org/wiki/Unicode]

!!Java
!HttpServletRequest クラス
 public void setCharacterEncoding(java.lang.String env)
                          throws java.io.UnsupportedEncodingException
  
この要求の本体で使用される文字エンコーディングの名前をオーバーライドします。
このメソッドは、要求パラメータの読み取り、
または getReader() を使用した入力の読み取りに先立って呼び出す必要があります。

![URLEncoder|http://java.sun.com/javase/ja/6/docs/ja/api/java/net/URLEncoder.html]、 [URLDecoder|http://java.sun.com/javase/ja/6/docs/ja/api/java/net/URLDecoder.html] クラス

HTML 形式をエンコード、デコードするためのユーティリティクラス。
String と application/x-www-form-urlencoded MIME 形式 をエンコード、デコードするための static メソッドを含む。

*「a」から「z」、「A」から「Z」、「0」から「9」、「-」、「_」、「.」、「*」。文字 「%」は使用可能だが、特殊なエスケープシーケンスの開始と解釈
*英数字文字の「a」から「z」、「A」から「Z」、および「0」から「9」は元のまま残す
*特殊文字の「.」、「-」、「*」、および「_」は元のまま残す
*プラス記号「+」を空白文字「 」に変換する
*「%xy」という形式のシーケンスは、バイトの表現として扱う

""JavaScript の encodeURIComponent、decodeURIComponent に対応
!!JSP
!<%@ page contentType="text/html; charset=Shift-JIS" %>
出力の文字エンコーディングをpage指示子を用いて設定します。

!<%@ page pageEncoding="Shift-JIS" %>   
取り込むファイルの文字エンコーディングを指定

WebサーバやWebブラウザでは,charsetは次のような優先順位で処理するように
HTML仕様 4.0で規定されています.

+ Content-Typeのcharsetパラメータ (HTTP) 
+ http-equivのあるMETA宣言のContent-Typeやcharsetの値 (HTML) 
+ 要素のcharset属性 (HTML) 

ServletやJSPのContent-Typeで"text/html; charset=Shift_JIS"のように
charsetを指定した場合は(1)に相当します


!!ECMAScript(JavaScript)
!encodeURI, decodeURI, encodeURIComponent, decodeURIComponent 
escape/unescape と違って RFC 準拠 ([RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax|http://www.ietf.org/rfc/rfc2396.txt])
JavaScript では ECMA-262 3rd Edition に対応するバージョン 1.5 で、これらの関数に対応
JScript はバージョン 5.5 で対応(MSIE 5.5)

*[encodeURI|https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/encodeURI]
*[encodeURIComponent|https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent]


""encodeURIでは、"&"や"+"や"="などの文字をエンコードしないので、GETやPOSTメソッドで利用するときは、encodeURIComponentを使用する。こちらは、英数以外は、"- _ . ! ~ * ' ( ) "のみがエスケープされない。

!HTML特殊文字の処理
![[javascript:を利用するとデコードされる|HTML javascript:を利用するとデコードされる]]

::参照
http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars
http://www.cresc.co.jp/tech/java/URLencoding/JavaScript_URLEncoding.htm

----
{{include_html banner_html, "!J2EE"}}