我在KickAssTorrents.com上浏览种子,当我访问链接时,它以不同的方式编码在网址中;
例如(IMDb链接):http://kat.ph/account/confirm/url/aHR0cDovL3d3dy5pbWRiLmNvbS90aXRsZS90dDA0MDE3Mjk=/
现在,当我更改角色时,链接中的某些内容会发生变化,我想知道如何在C#或jQuery中执行此操作?
在C#中:
static public string EncodeTo64(string toEncode) {
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
return returnValue;
}
static public string DecodeFrom64(string encodedData) {
byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
string returnValue = System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);
return returnValue;
}
MessageBox.Show(DecodeFrom64("aHR0cDovL3d3dy5pbWRiLmNvbS90aXRsZS90dDA0MDE3Mjk="));
Run Code Online (Sandbox Code Playgroud)
使用System.Text.UTF8Encoding.UTF8.GetBytes(...)如果字符串toEncode包含ASCII之外的字符.请注意,在这种情况下,解码URL的任何一方都必须能够正确处理这些字符.
另外,也要看看情况的=,+并且/由大卫哈丁提到,看看是否有任何提及的问题适用于您.或者只是使用大卫的答案.
jQuery:google'jquery base64 encode'(网站plugins.jquery.com目前似乎处于离线状态,所以我无法确认)
最好使用/sf/answers/125242561/中的以下代码
///<summary>
/// Base 64 Encoding with URL and Filename Safe Alphabet using UTF-8 character set.
///</summary>
///<param name="str">The origianl string</param>
///<returns>The Base64 encoded string</returns>
public static string Base64ForUrlEncode(string str)
{
byte[] encbuff = Encoding.UTF8.GetBytes(str);
return HttpServerUtility.UrlTokenEncode(encbuff);
}
///<summary>
/// Decode Base64 encoded string with URL and Filename Safe Alphabet using UTF-8.
///</summary>
///<param name="str">Base64 code</param>
///<returns>The decoded string.</returns>
public static string Base64ForUrlDecode(string str)
{
byte[] decbuff = HttpServerUtility.UrlTokenDecode(str);
return Encoding.UTF8.GetString(decbuff);
}
Run Code Online (Sandbox Code Playgroud)
原因是 Base64 包含无效的 URL 字符。