كيف يمكنني عرض رمز العلامة التجارية المسجلة (®) باستخدام vb.net؟
-
26-09-2019 - |
سؤال
لقد توليت الدعم من طلب في الشركة التي أعمل من أجلها. فجأة ، يريد العميل أن يكون قادرًا على إدخال علامة تجارية مسجلة في حقل اسم. يتم حفظ الرمز ، باستخدام ALT+0174 ، بشكل صحيح ، لكن التطبيق لا يرميزه بشكل صحيح. في الأساس هذا ما أفعله:
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim ms As New MemoryStream
Dim xml_text_writer As New XmlTextWriter(ms, _
System.Text.Encoding.UTF8)
xml_text_writer.Formatting = Formatting.Indented
xml_text_writer.Indentation = 4
xml_text_writer.WriteStartDocument(True)
xml_text_writer.WriteStartElement("Employees")
MakeEmployee(xml_text_writer, txtFName.Text, txtLName.Text, 11111)
xml_text_writer.WriteEndElement()
xml_text_writer.WriteEndDocument()
xml_text_writer.Flush()
ms.Flush()
ms.Position = 0
Dim b(CInt(ms.Length) - 1) As Byte
ms.Read(b, 0, CInt(ms.Length))
ms.Close()
Dim strReturn As String = System.Text.ASCIIEncoding.ASCII.GetString(b)
If strReturn.StartsWith("???", StringComparison.CurrentCultureIgnoreCase) Then
strReturn = strReturn.Substring(3)
End If
txtName.Text = strReturn
End Sub
Private Sub MakeEmployee(ByVal xml_text_writer As _
XmlTextWriter, ByVal first_name As String, ByVal _
last_name As String, ByVal emp_id As Integer)
xml_text_writer.WriteStartElement("Employee")
xml_text_writer.WriteStartElement("FirstName")
xml_text_writer.WriteString(first_name)
xml_text_writer.WriteEndElement()
xml_text_writer.WriteStartElement("LastName")
xml_text_writer.WriteString(last_name)
xml_text_writer.WriteEndElement()
xml_text_writer.WriteStartElement("EmployeeId")
xml_text_writer.WriteString(emp_id.ToString)
xml_text_writer.WriteEndElement()
xml_text_writer.WriteEndElement()
End Sub
الإخراج الذي أحصل عليه من هذا الرمز هو:
جون سميث ؟؟ 11111
كل شيء على ما يرام ، باستثناء "؟؟" بعد "سميث" يجب أن يكون "®". ما هي أفضل طريقة ، إن وجدت ، لعرض الرمز بشكل صحيح؟
المحلول
Dim Streturn As string = system.text.asciiencoding.ascii.getString (B)
قمت بترميز XML في UTF-8 ، لا تقرأه مرة أخرى على أنها ASCII. ستفقد جميع الشخصيات الخاصة التي لا يمكن تشفيرها. يصلح:
Dim strReturn As String = System.Text.Encoding.UTF8.GetString(b)
لا تنتمي إلى StackOverflow