كيفية تحويل أحرف Unicode إلى رموز الهروب
سؤال
لذا، لدي مجموعة من السلاسل مثل هذا:{\b\cf12 よろてそ } .أعتقد أنه يمكنني التكرار على كل حرف واستبدال أي رمز Unicode (يحرر:أي شيء حيث AscW(char) > 127 or < 0
) برمز هروب Unicode (\u###).ومع ذلك، لست متأكدًا من كيفية القيام بذلك برمجيًا.أي اقتراحات؟
إيضاح:
لدي سلسلة مثل {\b\cf12 よろてそ } وأريد سلسلة مثل {\b\cf12 [STUFF]}، حيث سيتم عرض [STUFF] كـ よろてそ عندما أعرض نص rtf.
المحلول
يمكنك ببساطة استخدام الدالة AscW() للحصول على القيمة الصحيحة: -
sRTF = "\u" & CStr(AscW(char))
لاحظ أنه على عكس عمليات الهروب الأخرى لـ unicode، يستخدم RTF التمثيل العشري القصير (2 بايت) لحرف unicode.مما يجعل التحويل في VB6 سهلاً للغاية.
يحرر
كما يشير MarkJ في أحد التعليقات، فإنك ستفعل ذلك فقط مع الأحرف خارج النطاق 0-127 ولكن بعد ذلك ستحتاج أيضًا إلى إعطاء بعض الأحرف الأخرى داخل النطاق 0-127 معالجة خاصة أيضًا.
نصائح أخرى
وهناك طريقة أخرى أكثر ملتوية، سيكون لإضافة MSScript.OCX للمشروع واجهة مع وظيفة الهروب فبسكريبت و. على سبيل المثال
Sub main()
Dim s As String
s = ChrW$(&H3088) & ChrW$(&H308D) & ChrW$(&H3066) & ChrW$(&H305D)
Debug.Print MyEscape(s)
End Sub
Function MyEscape(s As String) As String
Dim scr As Object
Set scr = CreateObject("MSScriptControl.ScriptControl")
scr.Language = "VBScript"
scr.Reset
MyEscape = scr.eval("escape(" & dq(s) & ")")
End Function
Function dq(s)
dq = Chr$(34) & s & Chr$(34)
End Function
والممرات الروتينية الرئيسية في الأحرف اليابانية الأصلية وإخراج التصحيح تقول:
%u3088%u308D%u3066%u305D
وHTH