| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「文字化けの対処」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==Webアプリケーションでの文字化けの対処==
+
==[[Webアプリケーション]]での文字化けの対処==
{{category 文字化け}}
+
[[Category:文字化け]]
  
 
*[http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932 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 Microsoftコードページ932]
 
*[http://ja.wikipedia.org/wiki/Unicode Unicode]
 
*[http://ja.wikipedia.org/wiki/Unicode Unicode]
  
===Java===
+
===[[Java]]===
====HttpServletRequest クラス====
+
====HttpServlet[[R]]equest クラス====
 
  public void setCharacterEncoding(java.lang.String env)
 
  public void setCharacterEncoding(java.lang.String env)
 
                           throws java.io.UnsupportedEncodingException
 
                           throws java.io.UnsupportedEncodingException
 
    
 
    
この要求の本体で使用される文字エンコーディングの名前をオーバーライドします。
+
この要求の本体で使用される文字[[エンコーディング]]の名前をオーバーライドします。
 
このメソッドは、要求パラメータの読み取り、
 
このメソッドは、要求パラメータの読み取り、
または getReader() を使用した入力の読み取りに先立って呼び出す必要があります。
+
または get[[R]]eader() を使用した入力の読み取りに先立って呼び出す必要があります。
  
 
====[http://java.sun.com/javase/ja/6/docs/ja/api/java/net/URLDecoder.html 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 URLEncoder|http://java.sun.com/javase/ja/6/docs/ja/api/java/net/URLEncoder.html]、 [URLDecoder] クラス====
  
HTML 形式をエンコード、デコードするためのユーティリティクラス。
+
[[HTML]] 形式をエンコード、デコードするためのユーティリティクラス。
 
String と application/x-www-form-urlencoded MIME 形式 をエンコード、デコードするための static メソッドを含む。
 
String と application/x-www-form-urlencoded MIME 形式 をエンコード、デコードするための static メソッドを含む。
  
25行目: 25行目:
 
*「%xy」という形式のシーケンスは、バイトの表現として扱う
 
*「%xy」という形式のシーケンスは、バイトの表現として扱う
  
<blockquote>JavaScript の encodeURIComponent、decodeURIComponent に対応</blockquote>
+
<blockquote>[[JavaScript]] の encodeURIComponent、decodeURIComponent に対応</blockquote>
===JSP===
+
===[[JSP]]===
 
====<%@ page contentType="text/html; charset=Shift-JIS" %>====
 
====<%@ page contentType="text/html; charset=Shift-JIS" %>====
出力の文字エンコーディングをpage指示子を用いて設定します。
+
出力の文字[[エンコーディング]]をpage指示子を用いて設定します。
  
 
====<%@ page pageEncoding="Shift-JIS" %>  ====
 
====<%@ page pageEncoding="Shift-JIS" %>  ====
取り込むファイルの文字エンコーディングを指定
+
取り込むファイルの文字[[エンコーディング]]を指定
  
 
WebサーバやWebブラウザでは,charsetは次のような優先順位で処理するように
 
WebサーバやWebブラウザでは,charsetは次のような優先順位で処理するように
HTML仕様 4.0で規定されています.
+
[[HTML]]仕様 4.0で規定されています.
  
# Content-Typeのcharsetパラメータ (HTTP)  
+
# Content-Typeのcharsetパラメータ ([[HTTP]])  
# http-equivのあるMETA宣言のContent-Typeやcharsetの値 (HTML)  
+
# http-equivのあるMETA宣言のContent-Typeやcharsetの値 ([[HTML]])  
# 要素のcharset属性 (HTML)  
+
# 要素のcharset属性 ([[HTML]])  
  
ServletやJSPのContent-Typeで"text/html; charset=Shift_JIS"のように
+
Servletや[[JSP]]のContent-Typeで"text/html; charset=Shift_JIS"のように
 
charsetを指定した場合は(1)に相当します
 
charsetを指定した場合は(1)に相当します
  
  
===ECMAScript(JavaScript)===
+
===ECMAScript([[JavaScript]])===
====encodeURI, decodeURI, encodeURIComponent, decodeURIComponent ====
+
====encodeU[[R]]I, decodeU[[R]]I, encodeU[[R]]IComponent, decodeU[[R]]IComponent ====
 
escape/unescape と違って RFC 準拠 ([http://www.ietf.org/rfc/rfc2396.txt RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax])
 
escape/unescape と違って RFC 準拠 ([http://www.ietf.org/rfc/rfc2396.txt RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax])
JavaScript では ECMA-262 3rd Edition に対応するバージョン 1.5 で、これらの関数に対応
+
[[JavaScript]] では ECMA-262 3rd Edition に対応するバージョン 1.5 で、これらの関数に対応
JScript はバージョン 5.5 で対応(MSIE 5.5)
+
JScript はバージョン 5.5 で対応(MS[[IE]] 5.5)
  
 
*[https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/encodeURI encodeURI]
 
*[https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/encodeURI encodeURI]
54行目: 54行目:
  
  
<blockquote>encodeURIでは、"&"や"+"や"="などの文字をエンコードしないので、GETやPOSTメソッドで利用するときは、encodeURIComponentを使用する。こちらは、英数以外は、"- _ . ! ~ * ' ( ) "のみがエスケープされない。</blockquote>
+
<blockquote>encodeU[[R]]Iでは、"&"や"+"や"="などの文字をエンコードしないので、GETやPOSTメソッドで利用するときは、encodeU[[R]]IComponentを使用する。こちらは、英数以外は、"- _ . ! ~ * ' ( ) "のみがエスケープされない。</blockquote>
  
====HTML特殊文字の処理====
+
====[[HTML特殊文字の処理]]====
====[HTML javascript:を利用するとデコードされる] [javascript:を利用するとデコードされる]====
+
====[[HTML javascript:を利用するとデコードされる|javascript:を利用するとデコードされる]]====
  
 
=====参照=====
 
=====参照=====
http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars
+
http://www.w3.org/T[[R]]/html40/appendix/notes.html#non-ascii-chars
http://www.cresc.co.jp/tech/java/URLencoding/JavaScript_URLEncoding.htm
+
http://www.cresc.co.jp/tech/java/URLencoding/[[JavaScript]]_URLEncoding.htm
  
 
----
 
----
{{include_html banner_html, "!J2EE"}}
+
{{include_html [[banner_html]], "!J2EE"}}

2020年2月16日 (日) 04:21時点における最新版

Webアプリケーションでの文字化けの対処

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] クラス

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

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

<blockquote>JavaScript の encodeURIComponent、decodeURIComponent に対応</blockquote>

JSP

<%@ page contentType="text/html; charset=Shift-JIS" %>

出力の文字エンコーディングをpage指示子を用いて設定します。

<%@ page pageEncoding="Shift-JIS" %>

取り込むファイルの文字エンコーディングを指定

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

  1. Content-Typeのcharsetパラメータ (HTTP)
  2. http-equivのあるMETA宣言のContent-Typeやcharsetの値 (HTML)
  3. 要素の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) JavaScript では ECMA-262 3rd Edition に対応するバージョン 1.5 で、これらの関数に対応 JScript はバージョン 5.5 で対応(MSIE 5.5)


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

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"}}