2015-05-20 154 views
2

我需要將RTF格式的文本放在richtextbox中,我嘗試使用richtextbox.rtf = TextString參數,但問題是該字符串有特殊字符,而richtextbox不能正確顯示所有字符串。 String和代碼,我使用:RichTextBox和特殊字符c#

字符串(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的節目「+ ---這是隻是一個例子,特殊字符可能會改變--- +「,在某些情況下,顯示」??????「。

我該如何解決這個問題?如果我將\rtf1\ansi更改爲\rtf1\utf-8,則看不到更改。

+0

_I需要把文字與一個RichTextBox RTF格式,我試圖把它與richtextbox.rtf = TextString PARAMETER_您使用字體的問題放在一邊:你真的應該操縱RTB的RTF,只有當它是真的有必要。請參閱[這裏的規則](http://stackoverflow.com/questions/30295523/how-do-i-send-varying-text-sized-strings-from-one-richtextbox-to-another/30296255?s= 2 | 0.1630#30296255)如何更改RTB內容! – TaW

回答

2

你可以簡單地使用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);