Нет сопоставления для символа Юникода на целевой многобайтовой кодовой странице в приложении Windows Сохранить

У меня есть приложение UWP, которое я развертываю как AppPackage, и я вижу ошибку отключения, когда пытаюсь прочитать / сохранить файл в папке LocalState. Это происходит не каждый раз, поэтому я думаю, что в какой-то момент файл заблокирован во время процесса. Ошибка

В целевой многобайтовой кодовой странице нет сопоставления для символа Юникода.

И код, который выдает ошибку

private const string SETTINGS_FILENAME = "settings.json";
private static readonly StorageFolder _settingsFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
public async static Task<ConfigWrapper> LoadSettings()
{
    try
    {
        StorageFile sf = await _settingsFolder.GetFileAsync(SETTINGS_FILENAME);
        if (sf == null) return null;

        string content = await FileIO.ReadTextAsync(sf, Windows.Storage.Streams.UnicodeEncoding.Utf8);
        return JsonConvert.DeserializeObject<ConfigWrapper>(content);
    }
    catch (Exception e)
    {
        DiagnosticsClient.TrackException(e);
        return null;
    }
}

public async static Task<bool> SaveSettings(ConfigWrapper data)
{
    try
    {
        StorageFile file = await _settingsFolder.CreateFileAsync(SETTINGS_FILENAME, CreationCollisionOption.ReplaceExisting);
        string content = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { });
        await FileIO.WriteTextAsync(file, content, Windows.Storage.Streams.UnicodeEncoding.Utf8);
        return true;
    }
    catch (Exception e)
    {
        DiagnosticsClient.TrackException(e);
        return false;
    }
}

Я обязательно сохраняю и читаю файл в UTF-8, поэтому я не уверен, почему может возникнуть ошибка кодирования. Что мне нужно сделать (например, заблокировать файл), когда я сохраняю / читаю?


person Isaac Levin    schedule 25.04.2020    source источник
comment
Найдите способ сбросить оскорбительный текст в шестнадцатеричном формате.   -  person Rick James    schedule 26.04.2020
comment
Вам нужен нечитаемый файл? Вот до и после   -  person Isaac Levin    schedule 26.04.2020
comment
drive.google.com/drive/mobile/folders/   -  person Isaac Levin    schedule 26.04.2020
comment
Файл before - это не JSON, не юникод, не испорченный UTF-8, не шестнадцатеричный, не то, что я узнаю. Если вы работаете на сервере Unix, сделайте file filename, чтобы увидеть, может ли он с помощью своей магии определить, что это такое.   -  person Rick James    schedule 26.04.2020
comment
Файл before ЯВЛЯЕТСЯ файлом json, что вы скажете, что это не так?   -  person Marlonchosky    schedule 26.04.2020
comment
Я работаю в Windows, следовательно, wpf. Код показывает, что я сохраняю файл json как utf8, но он каким-то образом повреждается   -  person Isaac Levin    schedule 26.04.2020
comment
@IsaacLevin - Извините, я их поменял местами. Да, раньше это JSON; после не в формате, который я узнал.   -  person Rick James    schedule 26.04.2020


Ответы (1)


Многие приложения сохраняют данные в собственном формате. Тарабарщина, которую вы предоставили, вероятно, именно такая.

Такие приложения часто имеют возможность «записывать», «экспортировать» или «сохранять как» данные. Ищите такие.

person Rick James    schedule 25.04.2020
comment
Я сам сохраняю файл как utf8 json в коде. Он каким-то образом портится - person Isaac Levin; 26.04.2020
comment
@IsaacLevin - Можете ли вы распечатать его и / или выгрузить начало в шестнадцатеричном формате? - person Rick James; 26.04.2020
comment
Что печатать? Формат файла никогда не должен меняться. Но иногда, когда я просматриваю файл, он выглядит так, как будто это не json. Я пытаюсь понять, чем это вызвано. - person Isaac Levin; 26.04.2020