在VBA中将Unicode转义字符(\ u #### format)转换为UTF-8?

时间:2014-03-15 16:15:44

标签: string vba unicode utf-8 encode

我想在VBA中将“text”变量中的特殊字符转换回正常状态!

    Dim text As String
    text = "Cs\u00fct\u00f6rt\u00f6k" 
    text = Encoding.utf8.GetString(Encoding.ASCII.GetBytes(text)) 
    MsgBox text 
    'Csütörtök would be the correct result

但是在上面的代码中,Excel 2013给出了一个关于“编码”方法的错误..无法解析它。

如果您输入文本值,它应该像这个在线转换器一样工作: http://www.rapidmonkey.com/unicodeconverter/reverse.jsp

这个问题有什么好的解决方案吗?一行代码可能吗? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

Encoding类不解码转义序列,您必须通过自己解析字符串来手动执行。就此而言,VB字符串使用UTF-16,因此您根本不需要使用Encoding类。只需将字符2-7("\u00fc")替换为单个&H00FC字符,将字符9-14("\u00f6")替换为单个&H00F6字符等,然后您就可以了完成。每个\uXXXX序列代表一个Unicode代码点。