Я знаю, что это старый вопрос, но ради будущих читателей; Вы можете определить, сколько байтов в данной строке (или строковом значении), с помощью следующего:
Encoding.UTF8.GetByteCount("SomeString");
В этом случае;
Encoding.Unicode.GetByteCount(Environment.NewLine);
// OR
Encoding.Unicode.GetByteCount("\n\r");
.NET использует Unicode
, если не указано иное; например, с XmlSerializer
вы можете указать кодировку.
Не забудьте использовать правильную кодировку, когда вы пытаетесь подсчитать количество байтов, поскольку она отличается для каждой кодировки:
- Символ ASCII в 8-битном кодировании ASCII составляет 8 бит (1 байт), хотя он может уместиться в 7 бит.
- Символ ISO-8895-1 в кодировке ISO-8859-1 составляет 8 бит (1 байт).
- Символ Unicode в кодировке UTF-8 составляет от 8 бит (1 байт) до 32 бит (4 байта).
- Символ Unicode в кодировке UTF-16 составляет от 16 (2 байта) до 32 бит (4 байта), хотя большинство общих символов занимают 16 бит. Это кодировка, используемая Windows для внутреннего использования.
- Символ Unicode в кодировке UTF-32 всегда равен 32 битам (4 байта).
- Символ ASCII в UTF-8 составляет 8 бит (1 байт), а в UTF-16 - 16 бит.
- Дополнительные (не ASCII) символы в ISO-8895-1 (0xA0-0xFF) будут занимать 16 бит в UTF-8 и UTF-16.