Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RichTextbox,VB.NET中的RTF_Vb.net_Rtf - Fatal编程技术网

RichTextbox,VB.NET中的RTF

RichTextbox,VB.NET中的RTF,vb.net,rtf,Vb.net,Rtf,我在vb.net中使用richtextbox,它包含值“Сццц”,这是俄语单词 rtf1.selectedrtf和rtf.rtf,它返回字符的表示形式。rtf中是否有任何方法或选项以\uxxx格式返回值 секция='f1\'e5\'ea\'f6\'e8\'ff секция=\u0441\u0435\u043A\u0446\u0438\u044F (<-- i need this format) ============================= rtf1.text=сек

我在vb.net中使用richtextbox,它包含值“Сццц”,这是俄语单词

rtf1.selectedrtf
rtf.rtf
,它返回字符的表示形式。
rtf
中是否有任何方法或选项以
\uxxx
格式返回值

секция='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}  "  
Сццц='f1'e5'ea'f6'e8'ff

Сцццц=\u0441\u0435\u043A\u0446\u0438\u044F(您可以使用System.Text中的编码类来获取utf 8中的格式

例如:

有关更多详细信息,请查看msdn上的以下链接:


它有很好的编码示例,您可以遵循。我没有找到为richtextbox设置编码的方法,但是您可以使用encoding类来获得所需的格式。

我有一个小函数,可以将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

希望有帮助!

您会注意到您的RTF正在使用代码页204。您需要的是编码的Unicode字节。两个不同的野兽。找到一个ANSI代码页到Unicode转换器。或者编写一个。
>122
应该是
>126
,对吗?这些ASCII代码是123'{',124'|',125'},和126“~”。请参阅。从我的测试中,它们被正确添加到我的RichTextBox中。此外,代理项对未被处理,但可能很少。
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