Man*_*x22 3 c# rtf richtextbox special-characters
我需要将 RTF 格式的文本放入 RichTextBox 中,我尝试将其与参数一起放入richtextbox.rtf = TextString,但问题是该字符串具有特殊字符,并且 RichTextBox 无法正确显示所有字符串。我正在使用的字符串和代码:
字符串(文本字符串):
\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
C# 代码:
\n\nString TextString = System.Text.Encoding.UTF8.GetString(TextBytes);\nString TextRTF = @"{\\rtf1\\ansi " + TextString + "}";\nrichtextbox1.Rtf = TextRTF;\nRun Code Online (Sandbox Code Playgroud)\n\n使用此代码,richtextbox 显示“+---这只是一个示例,特殊字符可能会更改---+”,并且在某些情况下显示“??????”。
\n\n我怎么解决这个问题?如果我更改\\rtf1\\ansi为\\rtf1\\utf-8,我看不到变化。
您可以简单地使用该Text属性:
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";\nRun Code Online (Sandbox Code Playgroud)\n\n如果你想使用该RTF属性:\n看看这个问题:How to output unicode string to RTF (using C#)
您需要使用类似的方法将特殊字符转换为 rtf 格式:
\n\nstatic 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}\nRun Code Online (Sandbox Code Playgroud)\n\n然后使用:
\n\nrichtextbox1.Rtf = GetRtfUnicodeEscapedString(TextString);\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7667 次 |
| 最近记录: |