WinRT нет сопоставления для символа Юникода на целевой многобайтовой кодовой странице
Я пытаюсь прочитать файл в моем приложении Windows 8 Store. Вот фрагмент кода, который я использую для достижения этого:
if(file != null)
{
var stream = await file.OpenAsync(FileAccessMode.Read);
var size = stream.Size;
using(var inputStream = stream.GetInputStreamAt(0))
{
DataReader dataReader = new DataReader(inputStream);
uint numbytes = await dataReader.LoadAsync((uint)size);
string text = dataReader.ReadString(numbytes);
}
}
однако, exeption бросается на строку:
string text = dataReader.ReadString(numbytes);
сообщение Exeption:
No mapping for the Unicode character exists in the target multi-byte code page.
как мне пройти через это?
2 ответов
мне удалось правильно прочитать файл, используя аналогичный подход, предложенный duDE:
if(file != null)
{
IBuffer buffer = await FileIO.ReadBufferAsync(file);
DataReader reader = DataReader.FromBuffer(buffer);
byte[] fileContent = new byte[reader.UnconsumedBufferLength];
reader.ReadBytes(fileContent);
string text = Encoding.UTF8.GetString(fileContent, 0, fileContent.Length);
}
может кто-нибудь уточнить, почему мой первоначальный подход не сработал?
попробуйте это вместо string text = dataReader.ReadString(numbytes)
:
dataReader.ReadBytes(stream);
string text = Convert.ToBase64String(stream);