FileOpenPicker - 如何读取特殊字符

时间:2017-01-22 23:19:08

标签: c# uwp fileopenpicker

我有FileOpenPicker的问题。我使用特殊字符,例如ść和我的文件.txt有内容: “śśććęó”

这是我的代码:

nnoremap <buffer> <silent> s  :<C-U>call PareditEraseFwd()<CR>i

nnoremap <buffer> <silent> S  V:<C-U>call PareditChange(visualmode(),1)<CR>

当我读到我的文件时,我会得到类似的结果:

enter image description here

我尝试过改变文化,编码而没有。

这门课有什么问题?

我真的很感激任何帮助或指导。谢谢!

1 个答案:

答案 0 :(得分:0)

问题不在于类,而在于txt文件的编码。您可能已将编码设置为 ANSI ,如果您尝试使用代码读取它,它将为您提供奇怪的字符。要正确地执行此操作,您必须定义特定编码以及注册提供程序:

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.List;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
picker.FileTypeFilter.Add(".txt");
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // register provider - by default encoding is not supported
    Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
    using (var inputStream = await file.OpenReadAsync())
    using (var classicStream = inputStream.AsStreamForRead())
    using (var streamReader = new StreamReader(classicStream, Encoding.GetEncoding(1250)))
    {
        var something = streamReader.ReadToEnd();
    }
}

如果您使用UTF-8编码保存文件会更容易,那么您可以立即阅读它。

enter image description here