C # версия функции JavaScript btoa

1

Мне нужно перекопировать что-то из js в С#, который использует метод btoa в js для строки символов unicode, чтобы преобразовать их в base64. Однако, насколько я знаю, кодировка, используемая javascrpt, отличается от всех доступных в С#. Мне нужно, чтобы кодировка была точно такой же и не возвращала разные значения на этих языках. Я попытался настроить сервер nodejs и сделать запросы на него, чтобы запустить кодировку таким образом, но это слишком медленно и нестабильно. Мне кажется, что мне нужно будет сделать свою собственную таблицу кодирования, но я понятия не имею, с чего начать или как это реализовать. Если кто-то может помочь, это будет очень признательно.

tl; dr: javascript btoa возвращает другое значение, чем кодирование 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.

Edit: попытался сравнить байтовые массивы как С#, так и javascript, но проблема в том, что функция btoa использует неназванную кодировку, поэтому я не могу фактически получить байты для печати байтового массива для него, не предполагая, что это что-то вроде utf8, которое оно не является.

  • 0
    Вы ищете метод ToBase64 ?
  • 0
    Вы сказали, что «btoa javascript возвращает другое значение, чем кодировка base 64 в c #» . Можете ли вы показать нам результаты кодирования в Base64 как в JS, так и в C #. Существует несколько различных вариантов Base64, некоторые из которых используют разные символы для разных значений, вам может потребоваться просто выполнить поиск / замену в выходной строке, чтобы изменить ее на нужный формат. См. En.wikipedia.org/wiki/Base64#Variants_summary_table
Показать ещё 6 комментариев

1 ответ

5
Лучший ответ

Проработал. Для всех, кто интересуется кодировкой, используемой iso-кодировкой. Функция btoa в javascript может быть реплицирована с использованием следующего метода С#:

public string encoding(string toEncode)
{
byte[] bytes= Encoding.GetEncoding(28591).GetBytes(toEncode);
string toReturn = System.Convert.ToBase64String(bytes);
return toReturn;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню