title: C# version of the javascript function btoa
body: <p>I need to recode something from js to c# that utilises the btoa method in js on a string of unicode chars to convert them to base64. However, as far as I know the encoding used by javascrpt is different to all those available in c#. I need the encoding to be exactly the same and not return different values across these languages. I have tried setting up a nodejs server and making get requests to it, in order to run the encoding that way, but this is far too slow and unstable. I am under the impression I would need to make my own encoding table but I have no idea where to start or how to implement this. If anyone could help that would be greatly appreciated.</p>
  
  <p>tl;dr: javascript's btoa returns different value than base 64 encoding in c# does. I need it to be the same values.</p>
  
  <p>code and outputs:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>I am aware the former example uses utf8 encoding which js does not, the problem is there is no encoding in .net that matches the javascript encoding. </p>
  
  <p>Edit: Tried to compare the byte arrays of both c# and javascript but the problem is the btoa function uses an unnamed encoding, so I can't actually get the bytes to print the byte array for it without assuming it is something like utf8 which it is not.</p>