我需要将一些内容从 js 重新编码为 c#,利用 js 中的 btoa 方法对一串 unicode 字符将它们转换为 base64。但是,据我所知,javascrpt 使用的编码与 c# 中可用的所有编码不同。我需要编码完全相同,并且不会在这些语言中返回不同的值。我尝试过设置一个nodejs服务器并向它发出get请求,以便以这种方式运行编码,但这太慢而且不稳定。我的印象是我需要制作自己的编码表,但我不知道从哪里开始或如何实现它。如果有人可以提供帮助,我们将不胜感激。
tl;dr:javascript 的 btoa 返回的值与 c# 中的 Base 64 编码不同。我需要它具有相同的值。
代码和输出:
c#:
String fromChar = new
String(247,71,186,8,125,72,2,1.0078125,0.003936767578125);
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(fromChar);
Console.WriteLine(System.Convert.ToBase64String(plainTextBytes));
output = w7dHwroIfUgCAQA=
javascript:
var x = btoa(String.fromCharCode(247,71,186,8,125,72,2,1.0078125,0.003936767578125);
console.log(x)
output =
90e6CH1IAgEA
我知道前一个示例使用 utf8 编码,而 js 没有,问题是 .net 中没有与 javascript 编码匹配的编码。
编辑:尝试比较 c# 和 javascript 的字节数组,但问题是 btoa 函数使用未命名的编码,所以我实际上无法获取字节来打印它的字节数组,而不假设它是类似于 utf8 的东西不是。