RichTextBox 和特殊字符 C#

Man*_*x22 3 c# rtf richtextbox special-characters

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

\n\n

字符串(文本字符串):

\n\n

\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90This is only an example, the special characters may change\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97

\n\n

C# 代码:

\n\n
String TextString = System.Text.Encoding.UTF8.GetString(TextBytes);\nString TextRTF = @"{\\rtf1\\ansi " + TextString + "}";\nrichtextbox1.Rtf = TextRTF;\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

我怎么解决这个问题?如果我更改\\rtf1\\ansi\\rtf1\\utf-8,我看不到变化。

\n

Jer*_*rry 5

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

\n\n
richTextBox1.Text = "\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90This is only an example, the special characters may change\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97";\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果你想使用该RTF属性:\n看看这个问题:How to output unicode string to RTF (using C#)

\n\n

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

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

然后使用:

\n\n
richtextbox1.Rtf = GetRtfUnicodeEscapedString(TextString);\n
Run Code Online (Sandbox Code Playgroud)\n