- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试用 Java 编码 String
时遇到了麻烦。
我有以下 C# 代码和字符串
Bpz2Gjg01d7VfGfD8ZP1UA==,当我执行 C# 代码时,我得到:
QnB6MkdqZzAxZDdWZkdmRDhaUDFVQT090
public static void Main(string[] args)
{
string strWord = "Bpz2Gjg01d7VfGfD8ZP1UA==";
byte[] encbuff = Encoding.UTF8.GetBytes(strWord);
string strWordEncoded = HttpServerUtility.UrlTokenEncode(encbuff);
Console.WriteLine(strWordEncoded);
}
我正在尝试用 Java 复制前面的代码,在第一个我尝试使用javax.xml.bind.DatatypeConverter
Class
:
public static void main(String[] args) {
String strWord = "Bpz2Gjg01d7VfGfD8ZP1UA==";
byte[] encbuff = strWord.getBytes(StandardCharsets.UTF_8);
String strWordEncoded = DatatypeConverter.printBase64Binary(encbuff);
System.out.println(strWordEncoded);
}
但是我收到以下字符串
(与 C# string
相比缺少最后一个零):
QnB6MkdqZzAxZDdWZkdmRDhaUDFVQT09
在我的第二次尝试中,我使用了 BouncyCaSTLe Base64
编码器:
public static void main(String[] args) {
String strWord = "Bpz2Gjg01d7VfGfD8ZP1UA==";
byte[] encbuff = strWord.getBytes(StandardCharsets.UTF_8);
String strWordEncoded = new String(Base64.encode(encbuff));
System.out.println(strWordEncoded);
}
但是我得到了与之前完全相同的String
(仍然缺少最后一个零):
QnB6MkdqZzAxZDdWZkdmRDhaUDFVQT09
有人知道会发生什么吗?
最佳答案
我查看了 .NET 框架代码。 UrlTokenEncode
实际上从 base64 字符串末尾删除了任何额外的 =
填充符号,并将其替换为填充符号的数量,因此 0
、 1
或 2
。这就是导致字符串末尾出现额外 0
的原因。因此请注意:HttpServerUtility.UrlTokenEncode
方法不是普通的 Base64 编码器。它实际上在内部使用 Convert.ToBase64String
进行常规编码,并在顶部添加了更多内容(请参阅我对这个问题的评论)。如果您需要创建这个精确的字符串,则需要在常规 Base64 编码之上在 Java 中实现相同的更改。
关于java - Java 中的 Base64 编码与 C# 中的 HttpServerUtility.UrlTokenEncode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55422403/
我正在将一个针对 net472 的项目移植到 netstandard。我遇到的最后一个 System.Web 依赖项是 HttpServerUtility.UrlTokenEncode(Byte[])
我在 C# 中有一段代码对字符串进行编码并返回 URL 安全字符串(稍后解码) string stringToEncrypt = "Winter is coming"; byte[] bytes =
我在尝试用 Java 编码 String 时遇到了麻烦。 我有以下 C# 代码和字符串 Bpz2Gjg01d7VfGfD8ZP1UA==,当我执行 C# 代码时,我得到: QnB6MkdqZzAxZD
如何使用 HttpServerUtility.UrlTokenDecode 在 Java 中编码将在 C# 中解码的字符串? 最佳答案 以下方法复制了 C# 功能。 public static Str
我试图从 Web API 项目中移除对 System.Web.dll 的依赖,但无意中发现了对 HttpServerUtility.UrlTokenEncode(byte[] input) 的调用(及
我是一名优秀的程序员,十分优秀!