Domanda

Quindi, ho un sacco di stringhe come questa: {\ b \ cf12 & # 12424; & # 12429; & # 12390; & # 12381; }. Sto pensando di poter iterare su ogni personaggio e sostituire qualsiasi Unicode ( Modifica: Qualunque cosa AscW(char) > 127 or < 0) con un codice di escape Unicode (\ u ###). Tuttavia, non sono sicuro di come farlo a livello di programmazione. Qualche suggerimento?

Chiarimento:

Ho una stringa come {\ b \ cf12 & # 12424; & # 12429; & # 12390; & # 12381; } e voglio una stringa come {\ b \ cf12 [STUFF]}, dove [STUFF] verrà visualizzato come & # 12424; & # 12429; & # 12390; & # 12381; quando visualizzo il testo RTF.

È stato utile?

Soluzione

Puoi semplicemente usare la funzione AscW () per ottenere il valore corretto: -

sRTF = "\u" & CStr(AscW(char))

Nota a differenza di altre escape per Unicode, RTF utilizza la rappresentazione int decimale con segno decimale (2 byte) per un carattere Unicode. Il che rende la conversione in VB6 molto semplice.

Modifica

Come sottolinea MarkJ in un commento, lo faresti solo per i personaggi al di fuori di 0-127, ma dovrai anche dare ad altri personaggi all'interno della gamma 0-127 anche una gestione speciale.

Altri suggerimenti

Un altro modo più indiretto sarebbe aggiungere MSScript.OCX al progetto e interfacciarsi con la funzione Escape di VBScript. Ad esempio

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

La routine principale passa nei caratteri giapponesi originali e l'output di debug dice:

%u3088%u308D%u3066%u305D

HTH

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top