【问题标题】:Encode And Decode Base64 String Between Java And C#在 Java 和 C# 之间编码和解码 Base64 字符串
【发布时间】:2018-04-10 14:29:59
【问题描述】:

我遇到了 base64 字符串之间的转换问题,我有一个 C# Web API 服务,它接收 Base64 编码的字符串。我现在从 Android(Java) 使用该服务,所以当我将字符串编码为 Base64 并发送到 C# 服务时,它接收良好我添加了一个断点,当我使用在线解码器对其进行解码时,它给了我正确的结果,但我的 C# Web Api 服务无法正确解码。

这是代码 Sinpet 请帮助我摆脱它,谢谢。

Java 代码:将字符串转换为 Base64

 bytesEncoded = Base64.encode(string.getBytes("UTF-8"), Base64.DEFAULT);

要解码的 C# 代码:

  byte[] buffer = new byte[jsonString.Length];
  String str2 = Convert.ToBase64String(Encoding.UTF8.GetBytes(jsonString));

在 C# 上收到:

【问题讨论】:

  • 你能给我们看一个你的输入和输出的例子吗?
  • 您的“解码”实际上是另一个“编码”步骤。对于“解码”,它应该是FromBase64String。但是:这里的jsonString 是什么?如果 string 是 base-64 文本:只需解码即可。
  • 这很可疑:byte[] buffer = new byte[jsonString.Length];
  • @JawadZeb 请查看 Marc Gravell 发布的内容,您不想要 ToBase64String 解码时想要 FromBase64String。
  • 随着更新:jsonString 看起来持有 base-64,所以:只需运行 Convert.FromBase64String(jsonString)

标签: java c# base64


【解决方案1】:

您的jsonString 似乎是base-64;在这种情况下,您可能想要:

byte[] buffer = Convert.FromBase64String(jsonString);

哪个应该为您提供您最初序列化为 base-64 的相同数据。

请注意,您的原始数据看起来像是一个 utf8 字符串,在这种情况下:

var s = Encoding.UTF8.GetString(buffer);

【讨论】:

  • 需要我在 3 分钟后接受。我在等它。你很棒。谢谢
  • 是的,现在我明白该怎么做了。谢谢
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多