Base64 стандартизирован? - PullRequest
8 голосов
/ 30 января 2012

В компании, в которой я работаю, у нас есть класс для преобразования в строку Base64 и обратно. Когда я впервые увидел код, я спросил, почему не использовать Convert.ToBase64String, который поставляется с .NET?

Затем я изменил тело метода так, чтобы он вызывал Convert.ToBase64String, но он не генерирует ту же строку.

Я пытался использовать ASCII, UTF8, Unicode и UTF32.

Я точно не помню, но я думаю, что ASCII генерирует строку одинаковой длины, но некоторые символы отличаются, а другие Enconding генерирует строки большего размера.

Возможно, наша реализация была неправильной, но я нашел реализации JavaScript, соответствующие нашей.

Разве Base64 не является портативным?

Редактировать: Я нашел это в Википедии, но я не знаю, было ли это причиной http://en.wikipedia.org/wiki/Base64#Implementations_and_history

Edit2 : Я упомянул кодировки, потому что мы преобразовываем строку в другую. Затем мне нужно сначала преобразовать мою исходную строку в байтовый массив, используя некоторую кодировку

Ответы [ 2 ]

10 голосов
/ 30 января 2012

RFC 3548. Нет, подожди! Есть более новый: RFC 4648 . (Спасибо, ДТБ!)

Кстати, вы, похоже, смешиваете base64, который превращает любой двоичный поток в поток ASCII и кодировки символов, которые представляют собой совершенно разные понятия. Вы можете прочитать эту вводную статью о кодировках.

3 голосов
/ 30 января 2012

Существует как минимум 10 различных реализаций.Они в основном отличаются символами для индексов 62 и 63.

http://en.wikipedia.org/wiki/Base64#Implementations_and_history

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...