Windows应用程序保存的目标多字节代码页中不存在Unicode字符的映射



我有一个UWP应用程序,我正在作为AppPackage部署,当我试图读取/保存LocalState文件夹中的文件时,我看到了一个关闭错误。不是每次都会发生这种情况,所以我认为在这个过程中,文件在某个时候被锁定了。错误是

目标多字节代码页中不存在Unicode字符的映射。

以及抛出错误的代码

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保存和读取文件,所以我不确定为什么会出现编码错误。当我保存/读取时,是否需要做一些事情(例如锁定文件(?

许多应用程序以专有格式保存数据。你提供的胡言乱语可能就是这样。

此类应用程序通常有一种"写入"、"导出"或"另存为"数据的方法。找这样的。

相关内容

最新更新