所以,我有一堆像这样的字符串:{\ b \ cf12よろてそ}。我想我可以迭代每个字符并用unicode转义码(\ u ###)替换任何unicode( Edit:Any where where AscW(char) > 127 or < 0
)。但是,我不确定如何以编程方式这样做。有什么建议吗?
澄清:
我有一个像{\ b \ cf12よろてそ}这样的字符串,我想要一个像{\ b \ cf12 [STUFF]}这样的字符串,当我查看rtf文本时,[STUFF]将显示为よろてそ。
答案 0 :(得分:2)
您只需使用AscW()函数即可获得正确的值: -
sRTF = "\u" & CStr(AscW(char))
注意与unicode的其他转义不同,RTF使用十进制签名的短int(2字节)表示形式的unicode字符。这使得VB6中的转换非常容易。
修改强>
正如MarkJ在评论中指出的那样,你只会对0-127之外的字符进行此操作,但是你也需要在0-127范围内给出一些其他字符特殊处理。
答案 1 :(得分:0)
另一种更迂回的方式是将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
Main例程传入原始日语字符,调试输出显示:
%u3088%u308D%u3066%u305D
HTH