我正在尝试获取一块包含字符串\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
答案 0 :(得分:6)
此行适用于您的示例:
s#\\u[0-9a-f]*#\=eval('"'.submatch(0).'"')#
或
s#\v\\u([0-9a-f]{4})#\=nr2char(str2nr(submatch(1),16))#