文字列をエンコード/デコードする

説明

CGIなどに日本語や記号などを含むデータをURL文字列として送信する場合、エンコード処理を行う必要があります。JavaScriptにはエンコード/デコード処理を行うメソッドがいくつか用意されています(下表)。古いブラウザではescape()、unescape()しか利用できない場合があります。エンコード処理を行うメソッドは、それぞれどの文字列をエンコードするかが異なっています。encodeURIComponent()では;/_:@&=+$,の文字までエンコードされます。これらの文字をエンコードしたくない場合はencodeURI()を使います。

エンコードデコード
escape()unescape()
encodeURI()decodeURI()
encodeURIComponent()decodeURIComponent()

JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>文字列をエンコード/デコードする</h1>
<form action="./check.cgi" method="get" name="mainForm">
文字:<input type="text" name="convCode" id="convCode" value="#mz-80K2E%21%21">
<input type="button" id="checkButton1" value="文字をエンコードする"><br>
<input type="button" id="checkButton2" value="文字をデコードする">
</form>
<div id="result">結果:</div>
</body>
</html>

window.onload = function(){
document.getElementById("checkButton1").onclick = function(){
var text = document.getElementById("convCode").value;
var encText = encodeURIComponent(text);
document.getElementById("result").innerHTML = "エンコード結果:"+encText;
}
document.getElementById("checkButton2").onclick = function(){
var text = document.getElementById("convCode").value;
var encText = decodeURIComponent(text);
document.getElementById("result").innerHTML = "デコード結果:"+encText;
}
}