c# - RichTextBox 用中文显示结果?
问题描述
尝试使用带有 UWP 和 VS 2017 的 C# 中的 RichTextBox 导入带有英文字符的纯文本文件。导入正常,除了所有字符都是中文。我必须为该文件使用 StorageFile 类,因为这是唯一适用于 UWP 文件隐私问题的类。我尝试了所有 TexSetOptions 都没有成功,并且找不到在流或 rtb 中指定格式的方法。这是代码:
StorageFile file = await StorageFile.GetFileFromPathAsync(filePath));
IRandomAccessStream stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
/* NOTE: RichTextBox (Name="editor") is defined in Xaml */
editor.Document.LoadFromStream(Windows.UI.Text.TextSetOptions.ApplyRtfDocumentDefaults, stream);
解决方案
如评论中所述,这是由于编码不匹配造成的。API 需要 UTF-16,但你有 UTF-8(或者可能是 ASCII)。考虑FileIO.ReadTextAsync
改用。这应该自动检测编码,或者如果没有,您可以直接指定它的重载。
请注意,如果您有一个使用 ANSI 代码页(不是任何 Unicode 风格)编码的文件,您需要先转换它(查看其他 SO 帖子)。
推荐阅读
- java - 使用 UNWIND 的 Neo4j 批量更新变慢甚至卡住
- postgresql - 运行 DockerFile 以使用 pg_restore 创建和恢复转储时出错
- linux - Docker build 说目录已经存在但它不存在
- linux - 如何保护码头工人?docker 安全决策之间的权衡
- android - 为什么我在 Xamarin 中使用 ContentProvider 插入项目后数据库为空?
- angularjs - 如何将 angularjs 上传功能迁移到 Angular 9
- wordpress - 无法编辑顶部菜单
- ffmpeg - FFMPEG zoompan 用于从开始持续时间连续放大/缩小
- sql - SQL 连接和过滤
- c - 从现有的开源 C 库中提取函数源代码