RichTextBox 和特殊字符 c#

RichTextBox and special chars c#

我需要将 RTF 格式的文本放入 richtextbox,我尝试将其与 richtextbox.rtf = TextString 参数一起放入,但问题是该字符串具有特殊字符且 richtextbox 未显示所有字符串正确。我使用的字符串和代码:

字符串(文本字符串):

╔═══This is only an example, the special characters may change═══╗

C#代码:

String TextString = System.Text.Encoding.UTF8.GetString(TextBytes);
String TextRTF = @"{\rtf1\ansi " + TextString + "}";
richtextbox1.Rtf = TextRTF;

使用这段代码,richtextbox显示“+---这只是一个例子,特殊字符可能会改变---+”,在某些情况下,显示“???????”。

我该如何解决这个问题?如果我将 \rtf1\ansi 更改为 \rtf1\utf-8,我看不到更改。

您可以简单地使用 Text 属性:

richTextBox1.Text = "╔═══This is only an example, the special characters may change═══╗";

如果要使用 RTF 属性: 看看这个问题:How to output unicode string to RTF (using C#)

您需要使用类似这样的方法将特殊字符转换为 rtf 格式:

static string GetRtfUnicodeEscapedString(string s)
{
    var sb = new StringBuilder();
    foreach (var c in s)
    {
        if(c == '\' || c == '{' || c == '}')
            sb.Append(@"\" + c);
        else if (c <= 0x7f)
            sb.Append(c);
        else
            sb.Append("\u" + Convert.ToUInt32(c) + "?");
    }
    return sb.ToString();
}

然后使用:

richtextbox1.Rtf = GetRtfUnicodeEscapedString(TextString);