<%@ Page Language="C#" %>
<!DOCTYPE html>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
Encoding enc = Encoding.UTF8;
base64_sample.Value =
Convert.ToBase64String(enc.GetBytes("<A>"));
//故意產生含"+"符號的Base64編碼
string mode = Request["mode"];
string b64 = Request["b64"];
if (!string.IsNullOrEmpty(mode))
{
Response.ContentType = "text/plain";
if (mode == "decode")
{
try
{
string res = enc.GetString(Convert.FromBase64String(b64));
Response.Write("Result=" + res);
}
catch (Exception ex)
{
Response.Write("Error: " + ex.Message);
}
}
else if (mode == "decode-fix")
{
string res = enc.GetString(
Convert.FromBase64String(FixBase64FromQueryString(b64)));
Response.Write("Result(Fixed)=" + res);
}
Response.End();
}
}
//由於QueryString中Base64的"+"會被解讀成空白符號,故用函數還原
string FixBase64FromQueryString(string b)
{
return b.Replace(" ", "+");
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Base64 Test</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.js"
type="text/javascript"> </script>
<script>
$(function () {
$("input").click(function () {
var v = $("#base64_sample").val();
var m = "decode";
//b2鈕,使用encodeURIComponent對Base64編碼內容再做編碼
//注意: escape()或encodeURI()不會轉換"+",不要用錯
if (this.id == "b2") v = encodeURIComponent(v);
//b3鈕,參數維持原貌(含"+"),在Server端再做處理
if (this.id == "b3") m += "-fix";
var url = location.href + "?mode=" + m + "&b64=" + v;
$("#dUrl").text(url);
$("#fDisp").attr("src", url);
});
});
</script>
<style>
body { padding: 10px; }
div { margin: 5px; }
input { width: 120px; margin-right: 10px; }
</style>
</head>
<body>
<form id="form1" runat="server">
<input type="hidden" id="base64_sample" runat="server" />
<div>
<input type="button" id="b1" value="直接傳送" />
<input type="button" id="b2" value="參數編碼後傳送" />
<input type="button" id="b3" value="Server端修正" />
</div>
<div id="dUrl"> </div>
<iframe id="fDisp" style="width: 400px;"></iframe>
</form>
</body>
</html>