我使用base64加密html標籤,因爲解決了我的代碼回發問題。我的html標籤包含符號,如+, - ,/或*。雖然解密加密字符串即時通訊得到以下錯誤:是否可以包含像+,*,/和 - 以base64格式編碼的符號?
無效的Base-64字符數組的長度。
有人可以在這裏提出一個解決方法嗎?
JavaScript從aspx頁面調用。
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";
function encode64(input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
}
else if (isNaN(chr3)) {
enc4 = 64;
}
output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
}
return output;
}
C#代碼來解碼字符串@頁面加載:可以通過給含有任何我所提到的符號,甚至空格字符的一個簡單的字符串來生成
public string DecodeBase64String(string encodedData)
{
byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
string returnValue = System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);
return returnValue;
}
錯誤。
HTML字符串:
"<tbody id=\"selectedColumnsTbody\">\n <tr style=\"cursor: move;\" id=\"ExprCountryMasterID10\"><td></td><td><input id=\"chk\" checked=\"checked\" class=\"textChangeClass\" type=\"checkbox\"></td><td>CountryMaster.ID + 10</td><td><input id=\"aliastextCountryMasterID10\" class=\"aliasTextChangeClass\" value=\"\" type=\"text\"></td>><td><input id=\"hiddenIDSortCountryMasterID10\" value=\"\" type=\"hidden\"></td></tr></tbody>\n
調用從CS頁解密方法:
保護無效的Page_Load(對象發件人,EventArgs的) {
//HtmlTextWriter htmlTable = new HtmlTextWriter();
//htmlTable.InnerHtml = htmlContent;
//Master.FindControl("ContentPlaceHolder1").Controls.Add(htmlTable);
if (Session["HtmlTable"] != null)
{
htmlContent = Session["HtmlTable"].ToString();
//htmlContent = htmlContent.Replace(" ", "+");
htmlContent = DecodeBase64String(htmlContent);
htmlTable = new HtmlGenericControl();
ContentPlaceHolder contentPlaceHolder = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
if (contentPlaceHolder != null)
{
htmlContent = "<table cellspacing=\"0\" cellpadding=\"0\" id=\"selectedColumns\" width=\"100%\">" + htmlContent + "</table>";
htmlTable.InnerHtml = htmlContent;
test.InnerHtml = htmlContent;
}
}
}
的Javascript即時通訊htmlEncode 功能StoreSessionForHtml(htmlContent){
// var encodedObject = htmlEncode(htmlContent);
// var decodedObject = htmlDecode(encodedObject);
//htmlContent = htmlContent.replace(/ /g, "+");
var encodedObject = encode64(htmlContent);
var requesthtmlContentParameter = '{' +
'htmlContentToServer:"' + encodedObject + '"}';
$.ajax({
type: "POST",
url: "Webtop.aspx/HTMLTableContent",
data: requesthtmlContentParameter,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
//alert("Success", msg.d);
}, //Event that'll be fired on Success
error: function() {
// alert("Try Again");
} //Event that'll be fired on Error
});
$("#<%= HiddenHtmlContainer.ClientID %>").val(encodedObject);
}
請添加更多的細節,如果您添加代碼,它會很好。 – BreakHead 2011-06-02 11:59:54
請添加你在做什麼/你怎麼做的代碼片段 – mkilmanas 2011-06-02 11:59:56
另外,如果你想讓我們知道你的代碼中的一些值是什麼(例如,你正在編碼的字符串和它編碼的內容),那麼我們可能能夠如果下面的答案不夠,請進行更多的調試。 – Chris 2011-06-02 12:37:33