2012-03-30 391 views
2

我在vb.net中使用richtextbox,其中包含值「секция」,它是俄語單詞。RichTextbox,VB.NET中的RTF

rtf1.selectedrtf and rtf.rtf,它返回/Un表示字符。 rtf有沒有什麼方法或選項可以返回\uXXXX格式的值?

секция='f1\'e5\'ea\'f6\'e8\'ff 
секция=\u0441\u0435\u043A\u0446\u0438\u044F (<-- i need this format) 
============================= 
rtf1.text=секция 
rtf1.selectedrtf returns 
"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset204{\*\fname Arial;}Arial CYR;}} \uc1\pard\b\protect\f0\fs16\'f1\'e5\'ea\'f6\'e8\'ff} " 
+0

您會注意到您的RTF正在使用代碼頁204.您要求的是編碼的Unicode字節。兩種不同的野獸。找到一個ANSI代碼頁到Unicode轉換器。或寫一個。 – 2012-03-30 22:08:35

回答

0

您可以使用System.Text發現編碼類來獲取格式UTF 8

如:

Encoding.UTF8.GetBytes(RichTextBox1.Text) 

有關詳細信息,你可以看看下面的鏈接msdn:

Encoding.UTF8 Property 它有很好的編碼示例,您可以按照。反正我沒有找到爲richtextbox設置編碼,但你可以使用編碼類來獲得你想要的格式。

1

我有一個小函數來將unicode字符串轉換爲unicode rtf文本。

Private Function UnicodeStringToRtfText(str As String) As String 
    Dim arrStr As Char() = str.ToCharArray() 
    Dim retStr As String = "" 
    For Each ch As String In arrStr 
     If (AscW(ch) > 122) Then 
      retStr &= "\u" & AscW(ch) & "?" 
     Else 
      retStr &= ch 
     End If 
    Next 
    Return retStr 
End Function 

希望得到這個幫助!

+0

'> 122'應該是'> 126',對吧?這些ASCII碼是123'{',124'|',125'}'和126'〜'。請參閱[ASCII可打印代碼](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart)。從我的測試中,它們被正確添加到我的RichTextBox中。此外,代理對沒有被處理,但可能這些是罕見的。 – Ron 2015-02-05 04:55:57