سؤال

لذا، لدي مجموعة من السلاسل مثل هذا:{\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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top