2012-03-30 183 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