将转义的代码点转换为unicode字符

时间:2014-01-12 15:38:02

标签: vim utf-8 iconv

我正在尝试获取一块包含字符串\u009e的字符串的JSON,并且我想将这些字符转换为其关联的单个unicode字符,在本例中为é。< / p>

我使用curl或wget下载json,它看起来像:

{ "name": "Kitsun\u00e9" }

需要在Vim中将其翻译为:

{ "name": "Kitsuné" }

我的第一个想法是使用Vim的iconv,但它不会将字符串评估为单个字符,只返回输入。

let code = '\u00e9'
echo iconv(code, "UTF-8", "UTF-8")
" Prints \u00e9

我想最终使用像

这样的东西
%s;\\u[0-9abcdef]*;\=iconv(submatch(0),"UTF-8", "UTF-8");g

1 个答案:

答案 0 :(得分:6)

此行适用于您的示例:

s#\\u[0-9a-f]*#\=eval('"'.submatch(0).'"')#

s#\v\\u([0-9a-f]{4})#\=nr2char(str2nr(submatch(1),16))#