требуется строку записать в поток. размер буфера задан. кодировка к примеру UTF8 (переменное кол-во байт на символ).
есть метод
Encoding.UTF8.GetByteCount(string s)
но это немного не то, т к
GetBytes(
string s,
int charIndex,
int charCount,
byte[] bytes,
int byteIndex
)
нужно указать символы, а их нужно посчитать (не знаю как)
GetCharCount() тут можно использовать только для проверки кол-ва симоволов в инициализированном массиве
Re: как определить кол-во символов UTF8 или 1251 которое занимает n байт
От:
Аноним
Дата:
20.08.12 12:05
Оценка:
Здравствуйте, -rsdn-, Вы писали:
Если использовать кодировку на основе 2 байтов на символ, то соответственно выделять под каждый символ по 2 байта в буфере, никаких переменных. Если нужно помучиться, то проверить по второму байту символа, пустой или нет
Re[2]: как определить кол-во символов UTF8 или 1251 которое занимает n байт
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, -rsdn-, Вы писали:
А>Если использовать кодировку на основе 2 байтов на символ, то соответственно выделять под каждый символ по 2 байта в буфере, никаких переменных. Если нужно помучиться, то проверить по второму байту символа, пустой или нет
я пока так и делаю, только еще возможна ситуация 6 байт. спасибо.
Re[3]: как определить кол-во символов UTF8 или 1251 которое занимает n байт
Здравствуйте, -rsdn-, Вы писали:
R>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, -rsdn-, Вы писали:
А>>Если использовать кодировку на основе 2 байтов на символ, то соответственно выделять под каждый символ по 2 байта в буфере, никаких переменных. Если нужно помучиться, то проверить по второму байту символа, пустой или нет R>я пока так и делаю, только еще возможна ситуация 6 байт. спасибо.
Дело не в том, чтобы запаковать меньше байт, если остальные пусты, тут проблем никаких нет. А все дело в том, как потом прочитать данные, откуда должна знать система когда были обрезаны пустые байты, а когда расширены по той же аналогии.
Используется определенный максимальный размер байтов, которые задействует конкретная кодировка, не больше не меньше.