首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileOpenPicker -如何读取特殊字符

FileOpenPicker -如何读取特殊字符
EN

Stack Overflow用户
提问于 2017-01-22 23:19:07
回答 1查看 221关注 0票数 2

我对FileOpenPicker有意见。我使用特殊字符,例如śćę和我的文件śćę的内容:“śśććęó”

这是我的密码:

代码语言:javascript
复制
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)
{
    using (var inputStream = await file.OpenReadAsync())
    using (var classicStream = inputStream.AsStreamForRead())
    using (var streamReader = new StreamReader(classicStream))
    {
        var something = streamReader.ReadToEnd();
    }
}

当我读到我的档案时,我得到了这样的信息:

我试过改变文化编码什么的都没有。

这门课有什么问题?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 07:23:40

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

代码语言:javascript
复制
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编码保存了您的文件,那么您就可以立即读取它,这样就容易多了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41797273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档