RichTextBox和特殊字符c#

时间:2015-05-20 23:07:48

标签: c# special-characters richtextbox rtf

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

String(TextString):

╔═══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 show" + ---这只是一个例子,特殊字符可能会改变--- +"在某些情况下,显示" ??????"。

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

1 个答案:

答案 0 :(得分:3)

您只需使用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);