4

だから、私はこのような文字列の束を持っています: {\b\cf12 よろてそ } . 各文字を反復処理して、Unicode (編集: Anything where AscW(char) > 127 or < 0 ) を Unicode エスケープ コード (\u###)に置き換えることができると考えています。ただし、プログラムでこれを行う方法がわかりません。助言がありますか?

説明:

{\b\cf12 よろてそ} のような文字列があり、{\b\cf12 [STUFF]} のような文字列が必要です。RTF テキストを表示すると [STUFF] はよろてそと表示されます。

4

2 に答える 2

3

AscW() 関数を使用して正しい値を取得できます。

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

Unicode の他のエスケープとは異なり、RTF は 10 進数の符号付き short int (2 バイト) 表現を Unicode 文字に使用することに注意してください。これにより、VB6 での変換が非常に簡単になります。

編集

MarkJ がコメントで指摘しているように、0 ~ 127 以外の文字に対してのみこれを行いますが、0 ~ 127 の範囲内の他の文字にも特別な処理を施す必要があります。

于 2009-06-19T09:15:01.320 に答える
0

もう1つの回りくどい方法は、MSScript.OCXをプロジェクトに追加し、VBScriptのEscape関数とインターフェイスすることです。例えば

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

于 2009-06-30T15:14:42.757 に答える