首页 > 解决方案 > 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);

标签: c#visual-studiotextuwpuwp-xaml

解决方案


如评论中所述,这是由于编码不匹配造成的。API 需要 UTF-16,但你有 UTF-8(或者可能是 ASCII)。考虑FileIO.ReadTextAsync改用。这应该自动检测编码,或者如果没有,您可以直接指定它的重载。

请注意,如果您有一个使用 ANSI 代码页(不是任何 Unicode 风格)编码的文件,您需要先转换它(查看其他 SO 帖子)。


推荐阅读