Здравствуйте, wizard_mephi, Вы писали:
_>Товарищи, не дайте погибнуть. Проблема такая — нужно перекодировать текстовый файл в UTF8 из 1251. Хз почему, но не получается. Вернее получается, но не так — при попытке прочитать строку с кириллицей из файла с виндовой кодировкой вместо русских символов получаются вопросы (C#, VS2005). Чем и как надо читать файл, чтобы потом перегнать его через UTF8Encoding ?
Как именно неполучается ? Код давай. Примерно так должно быть:
Decoder decoder = Encoding.UTF8.GetDecoder();
Encoder encoder = Encoding.GetEncoding(1251).GetEncoder();
byte[] inByteBuff = new byte[4096];
char[] charBuff = new char[ine.GetMaxCharCount(inByteBuff.Length)];
byte[] outByteBuff = new byte[oute.GetMaxByteCount(charBuff.Length)];
using (FileStream inf = new FileStream(file, FileMode.Open, FileAccess.Read))
using (FileStream outf = new FileStream(outFile, FileMode.Create, FileAccess.Write))
{
while (true)
{
int readed = inf.Read(inByteBuff, 0, inByteBuff.Length);
int chars = decoder.GetChars(inByteBuff, 0, readed, charBuff, 0);
int bytes = encoder.GetBytes(charBuff, 0, chars, outByteBuff, 0, false);
outf.Write(outByteBuff, 0, bytes);
if (readed == 0)
break;
}
}
Можно ещё проще — построчно, но в таком случае у меня были проблемы с последней пустой строкой.