2015-01-30 4 views
0

Я использую FileIO.ReadTextAsync() для чтения веб-страницы * .htm, которую я сохранил в ms-appdata: /// local, с использованием кодировки Utf8.Исключение чтения * .htm-файл из локальных данных приложения (приложение Metro)

Но при этом я получаю System.ArgumentOutOfRangeException. Дополнительная информация: No mapping for the Unicode character exists in the target multi-byte code page.

Чтение обычного * .txt файла с использованием той же функции отлично работает. Что я делаю не так ?

Edit: Код

async private void Button_Click(object sender, RoutedEventArgs e) 
{ 
StorageFile SF = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/test3.html")); 
string html = await FileIO.ReadTextAsync(SF, Windows.Storage.Streams.UnicodeEncoding.Utf8); 
} 
+0

Вы должны добавить код (или кратчайший возможный пример) для создания этой проблемы. – Sayse

+0

Вы правы - теперь сделано –

+1

Является ли файл htm на самом деле в UTF-8? Ошибка говорит о том, что это не так. Можете ли вы поделиться файлом, который воспроизводит проблему? –

ответ

1

Изменить файл кодирования с использованием Visual Studio. Когда я открыл файл, он имел кодировку: «Западноевропейская (Windows) - кодовая страница 1252»

  1. Открыть файл в Visual Studio
  2. Файл> Сохранить Дополнительные параметры ...>
  3. Изменить кодировку в "Unicode (UTF-8 с подписью) - Codepage 65001" Advanced save options
  4. Сохраните файл

Кредиты: Advanced save options in visual studio