【问题标题】:parse utf code in vbscript在 vbscript 中解析 utf 代码
【发布时间】:2011-01-17 01:13:27
【问题描述】:

有没有办法在 vbscript 中解析 utf 代码?我想做的是将字符串中的所有代码(如“\u00f1”)替换为其对应的字符。

【问题讨论】:

    标签: string vbscript utf


    【解决方案1】:

    Unescape 函数可以做到这一点*,只是它要求将 Unicode 字符编码为 <strong>%u***xxxx*</strong> 格式。因此,您需要先将 \u***xxxx* 代码替换为它们的 **%u***xxxx* 等效代码。这是一个例子:

    str = "\u0044\u006F \u0063\u0061\u0074\u0073 \u0065\u0061\u0074 \u0062\u0061\u0074\u0073\u003f"
    
    Set re = New RegExp
    re.Pattern = "\\(u[a-f\d]{4})"
    re.IgnoreCase = True
    re.Global = True
    
    str2 = Unescape(re.Replace(str, "%$1"))
    MsgBox str2
    

    * 请注意,Unescape 还将字符串中的 <strong>%***xx*</strong> 代码替换为相应的 ASCII 字符。因此,如果%***xx* 是字符串中的合法子字符串,则必须编写自己的替换函数。这样的函数可以执行以下操作:

    • 在输入字符串中搜索类似**\u***xxxx* 的子字符串,
    • 从每个匹配项中提取字符代码,并将其从十六进制转换为十进制形式,
    • 调用ChrW将十进制字符码转换为对应的Unicode字符,
    • 将每个 **\u***xxxx* 匹配替换为对应的字符。

    【讨论】:

    • re.Replace(str, "%$1") 是做什么的? “%$1”是什么意思?
    • @Carlos:此代码使用正则表达式 (re) 对 str 字符串执行替换操作。它将所有出现在 \ 前面的 u[a-f\d]{4} 模式(即 uxxxx)替换为前面带有 % 的相同文本。替换字符串中的$1 是这种重用模式的简写。
    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多