как определить кол-во символов UTF8 или 1251 которое занимает n байт
От: -rsdn- Беларусь http://dsalodki.wix.com/resume
Дата: 20.08.12 11:41
Оценка:
требуется строку записать в поток. размер буфера задан. кодировка к примеру 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- Беларусь http://dsalodki.wix.com/resume
Дата: 20.08.12 12:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, -rsdn-, Вы писали:


А>Если использовать кодировку на основе 2 байтов на символ, то соответственно выделять под каждый символ по 2 байта в буфере, никаких переменных. Если нужно помучиться, то проверить по второму байту символа, пустой или нет

я пока так и делаю, только еще возможна ситуация 6 байт. спасибо.
Re[3]: как определить кол-во символов UTF8 или 1251 которое занимает n байт
От: DevMax  
Дата: 20.08.12 12:21
Оценка:
Здравствуйте, -rsdn-, Вы писали:

R>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, -rsdn-, Вы писали:


А>>Если использовать кодировку на основе 2 байтов на символ, то соответственно выделять под каждый символ по 2 байта в буфере, никаких переменных. Если нужно помучиться, то проверить по второму байту символа, пустой или нет

R>я пока так и делаю, только еще возможна ситуация 6 байт. спасибо.

Дело не в том, чтобы запаковать меньше байт, если остальные пусты, тут проблем никаких нет. А все дело в том, как потом прочитать данные, откуда должна знать система когда были обрезаны пустые байты, а когда расширены по той же аналогии.
Используется определенный максимальный размер байтов, которые задействует конкретная кодировка, не больше не меньше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.