http://bugzilla.novell.com/show_bug.cgi?id=600844
http://bugzilla.novell.com/show_bug.cgi?id=600844#c0 Summary: RichTextBox.Rtf returns Unicode chars (get_Rtf), but does not accept Unicode chars (set_Rtf) Classification: Mono Product: Mono: Class Libraries Version: 2.6.x Platform: x86-64 OS/Version: Windows 7 Status: NEW Severity: Normal Priority: P5 - None Component: Windows.Forms AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC) If a RichTextBox contains Unicode chars (e.g. German umlauts or Greek chars), RichTextBox.Rtf will return a string that contains correct Unicode chars. However, if the same string is stored back to RichTextBox.Rtf, the chars appear as "???". (This may be a similar problem as in Bug 586901) Reproducible: Always Steps to Reproduce: 1. Create a Form and enter the following code: Public Sub New() InitializeComponent() Dim RichTextBox1 As New RichTextBox Dim RichTextBox2 As New RichTextBox 'now RichTextBox1.Text is set to German umlauts "äöü" and Greek alpha "α": RichTextBox1.Text = ChrW(228) & ChrW(246) & ChrW(252) & ChrW(945) RichTextBox2.Rtf = RichTextBox1.Rtf MsgBox(RichTextBox1.Text & " -> " & RichTextBox2.Text) End Sub 2. Run the program. Actual Results: If run in .NET, MsgBox shows "äöüα -> äöüα" If run in MONO, MsgBox shows "äöüα -> ????", i.e. all the Unicode characters were replaced by "?". RichTextBox1.Rtf returns a correct string that contains Unicode chars. However, when setting RichTextBox2.Rtf to this same string, only ASCII Chars 0-127 are accepted by Mono, and anything else is replaced by "?". Expected Results: As in .NET, Mono should accept all Unicode chars when setting RichTextBox.Rtf, so MsgBox should show "äöüα -> äöüα". Things work in MONO, if you convert RichTextBox1.Rtf to plain ASCII chars 0-127 before setting the string to RichTextBox2.Rtf: Public Sub New() InitializeComponent() Dim RichTextBox1 As New RichTextBox Dim RichTextBox2 As New RichTextBox RichTextBox1.Text = ChrW(228) & ChrW(246) & ChrW(252) & ChrW(945) 'note that RichTextBox1.Rtf is now converted before it is stored to RichTextBox2.Rtf: RichTextBox2.Rtf = ReplaceUnicodeChars(RichTextBox1.Rtf) MsgBox(RichTextBox1.Text & " -> " & RichTextBox2.Text) End Sub Private Function ReplaceUnicodeChars(ByVal RichText1 As String) As String Dim StringBuilder1 As New System.Text.StringBuilder Dim Char1 As Char For Each Char1 In RichText1 Select Case AscW(Char1) Case Is < 128 'normal ASCII Char 0-127 StringBuilder1.Append(Char1) Case Is < 256 'Char 128-255 StringBuilder1.Append("\'" & Hex(AscW(Char1))) Case Else 'Unicode Char StringBuilder1.Append("\u" & AscW(Char1).ToString & "?") End Select Next Return StringBuilder1.ToString End Function -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
