我试图获取一个包含字符串的JSON块,\u009e
我希望将这些字符转换为其关联的单个unicode字符,在本例中é
.
我使用curl或wget下载json,它看起来像:
{ "name": "Kitsun\u00e9" }
Run Code Online (Sandbox Code Playgroud)
并且需要在Vim中将其翻译为:
{ "name": "Kitsuné" }
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是使用Vim的iconv,但它不会将字符串作为单个字符进行评估,只返回输入.
let code = '\u00e9'
echo iconv(code, "UTF-8", "UTF-8")
" Prints \u00e9
Run Code Online (Sandbox Code Playgroud)
我想最终使用类似的东西
%s;\\u[0-9abcdef]*;\=iconv(submatch(0),"UTF-8", "UTF-8");g
Run Code Online (Sandbox Code Playgroud)
这行适用于您的示例:
s#\\u[0-9a-f]*#\=eval('"'.submatch(0).'"')#
Run Code Online (Sandbox Code Playgroud)
要么
s#\v\\u([0-9a-f]{4})#\=nr2char(str2nr(submatch(1),16))#
Run Code Online (Sandbox Code Playgroud)