JAvascriptで文字を符号化する


JAvascriptには、escape()、encodeURI()、およびencodeURIComponent()というURL文字列を符号化する方法がいくつかあります.これらのいくつかの符号化が果たす役割はそれぞれ異なる.
●escape()メソッド
指定した文字列をISO Latin文字セットで符号化します.すべてのスペース記号、句読点、特殊文字、およびその他の非ASCII文字は、%XX形式の文字符号化に変換されます(XXは、文字セットテーブル内の文字の符号化の16進数に等しい).たとえば、スペース記号に対応する符号化は%20です.このメソッドで符号化されない文字:@*/+

/**
 *             ,  。         。         URL     ,URL      dot,     dot    (    :       ,              )。         :/@*+I%20am%20Chinese%2C.%u6211
 */
var s = "/@*+I am Chinese,. ";
document.write(s);

●encodeURI()メソッド
URI文字列をUTF-8符号化形式でescape形式の文字列に変換する.この方法は主にアドレスバーのURLを符号化するので,アドレスバーに用いられる文字は符号化されない.このメソッドで符号化されない文字:!@#$&*( ) = :/; ? + '

/**
 *                   。
 *                     :http://www.baidu.com/?id=12&key=%E5%8C%97%E4%BA%AC%E4%B8%A4%E4%BC%9A&money=$12
 */
var loc = "http://www.baidu.com?id=12&key=    &money=$12";
window.location = encodeURI(loc);

●encodeURIComponent()メソッド
URI文字列をUTF-8符号化形式でescape形式の文字列に変換する.この方法は、encodeURI()に比べて、/などの文字など、より多くの文字を符号化する.したがって文字列にURIのいくつかの部分が含まれている場合、この方法で符号化することはできません.そうしないと、/文字が符号化された後にURLにエラーが表示されます.

/**
 *             "/",        URL       URL   
 *      :http%3A%2F%2Fwww.baidu.com%3Fid%3D12%26key%3D%E5%8C%97%E4%BA%AC%E4%B8%A4%E4%BC%9A%26money%3D%2412 
 */
var loc = "http://www.baidu.com?id=12&key=    &money=$12";
document.write(encodeURIComponent(loc));