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);
我需要将 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);