【问题标题】:Base 64 encoding and DecodingBase 64 编码和解码
【发布时间】:2015-10-19 06:40:12
【问题描述】:

我想解码 Base 64 中的特殊字符,并且我想在其中包含空格。请告诉我如何处理base 64编码和解码中的空间。

<add key="SpecialCharacter" value="w6J8YSzDoXxhLMOlfGEsw6R8YSzDo3xhLMOmfGFlLMSNfGMsw6l8ZSzDqHxlLMOqfGUsw6t8ZSzDu3x1LMO6fHUsw7x8dSzDuHxvLMOzfG8sw7R8byzDtnxvLMOyfG8sxaF8byxgfCwnfCzFgnxsLMW8fHo="/>

【问题讨论】:

  • 空格不是最常用字符集中的有效 Base64 字符。您要将其扩展为 Base65 还是将空格替换为其他字符之一?
  • 我可以替代,但怎么可能呢?
  • 这更容易,可能更好。我认为最简单且有效的方法是设置转换方法来编码和解码,如下所示: encode 方法首先将字节转换为标准 Base64 字符,然后调用 string.Replace 来放置空间代替您要替换的字符。对于解码,字符串。将标准 Base64 字符替换为空格,然后从那里使用 .NET Base64 转换为字节数组。

标签: c# decode encode


【解决方案1】:

看看这些函数:

public static string ToBase64(this string value)
{
    byte[] bytes = Encoding.Default.GetBytes(value);
    return Convert.ToBase64String(bytes);
}

public static string FromBase64(this string value)
{
    byte[] bytes = Convert.FromBase64String(value);
    return Encoding.Default.GetString(bytes);
}

第一个将字符串转换为 base 64 字符串。

例如:string base64 = "Hello World!".ToBase64()

第二个将其返回为“普通”字符串: string original = base64.FromBase64()

核心功能在Convert.FromBase64String(string value)。它返回一个字节数组,它必须转换为带有Encoding 的字符串。当您知道使用的编码时,您应该使用它而不是默认的(我认为是 UTF-16)。

我测试了一些编码。在您的情况下,字符串以 UTF8 编码并导致:

â|a,á|a,å|a,ä|a,ã|a,æ|ae,č|c,é|e,è|e,ê|e,ë|e,û|u ,ú|u,ü|u,ø|o,ó|o,ô|o,ö|o,ò|o,š|o,`|,'|,ł|l,ż|z

除了这里再次对@WDS 的评论:空格也应该转换为base64。无需空间处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2017-06-17
    • 2011-10-11
    相关资源
    最近更新 更多