Преобразуйте объект .net String в base64 закодированная строка

У меня есть вопрос, какое кодирование Unicode использовать при кодировании.NET представляют в виде строки в base64? Я знаю, что строки являются UTF-16, закодированным в Windows, так мой способ закодировать, правильный?

public static String ToBase64String(this String source) {
        return Convert.ToBase64String(Encoding.Unicode.GetBytes(source));
    }
33
задан chester89 13 April 2010 в 18:39
поделиться

3 ответа

То, что вы предоставили, прекрасно работает. Он создаст строку в кодировке base64 байтов вашей исходной строки, закодированной в UTF-16.

Если вы спрашиваете, может ли UTF-16 представлять любой символ в вашей строке, тогда да. Единственная разница между UTF-16 и UTF-32 заключается в том, что UTF-16 - это кодировка переменной длины; он использует два байта для представления символов в подмножестве и четыре байта для всех остальных символов.

Нет символов Юникода, которые не могут быть представлены в UTF-16.

26
ответ дан 27 November 2019 в 19:28
поделиться

Имейте в виду, что у вас нет для использования UTF-16 только потому, что это то, что используют строки .NET. Когда вы создаете этот массив байтов, вы можете выбрать любую кодировку, которая будет обрабатывать все символы в вашей строке. Например, UTF-8 был бы более эффективным, если бы текст был на языке, основанном на латинице, но он по-прежнему может обрабатывать все известные символы.

Самая важная проблема заключается в том, что любое программное обеспечение, декодирующее строку base64, должно знать, какую кодировку применить к массиву байтов для воссоздания исходной строки.

3
ответ дан 27 November 2019 в 19:28
поделиться

MSDN подтверждает, что класс UnicodeEncoding представляет собой Кодировка символов Юникода UTF-16 .

2
ответ дан 27 November 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: