【问题标题】:C#: Load *.txt to RichTextBox and convert into UTF8C#:将 *.txt 加载到 RichTextBox 并转换为 UTF8
【发布时间】:2021-10-25 17:51:27
【问题描述】:

我想打开文本文件并将它们加载到 RichTextBox 中。到目前为止一切顺利,但现在我正在努力解决编码问题。

所以我使用了 StackOverflow 页面中的 GetType() 方法: How to find out the Encoding of a File? C# - 它返回“System.Text.UnicodeEncoding”。

我现在的问题是:

  • 如何将 Unicode(我猜它们是这样的,虽然我没有仔细检查过)转换为 UTF8(可能还向后)?
  • 能否切换 RichTextBox 以正确显示 Unicode?以下显示了尴尬的结果:rtb.LoadFile(aFile, RichTextBoxStreamType.PlainText);
  • 如何定义 SaveFileDialog 应该使用哪种编码?

【问题讨论】:

  • 你如何阅读这些文件?你试过 File.ReadAllText() 吗?

标签: c# text encoding utf-8 richtextbox


【解决方案1】:

不要让 RichTextBox 从磁盘加载文件,而是自己加载它,while specifying the correct encoding。 (顺便说一句,Encoding.Unicode 只是“UTF-16 little-endian”的同义词。)

string myText = File.ReadAllText(myFilePath, Encoding.Unicode);

这将为您完成转换。您得到的字符串是“正确”编码的(即以 .NET 内部使用的格式),因此您可以将其分配给 RichTextBox 的 Text 属性。


关于您的第三个问题:SaveFileDialog 只是一个让用户选择文件名的工具。您对文件名的操作(例如:将一些文本保存到其中,或编码一些字符串然后保存它)与 SaveFileDialog 无关。

【讨论】:

    【解决方案2】:

    SaveFileDialog 只允许您选择保存文件的路径。它不会为你保存它..

    使用Encoding 类将一种编码转换为另一种编码。

    阅读this article,了解如何将其转换并写入文件的示例。

    【讨论】:

      【解决方案3】:

      您还可以使用: richTextBox.LoadFile(filePath, RichTextBoxStreamType.UnicodePlainText);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        • 2018-08-28
        • 2011-04-16
        • 1970-01-01
        相关资源
        最近更新 更多