BASH:将Unicode Hex转换为String

时间:2016-09-08 20:40:00

标签: bash unicode utf-8 encode

我在我的服务器上保存了这个文本文件,其中包含十六进制十进制格式的Unicode字母,如\u3010等。我想转换它们,以使它们人类可读,而不会摆脱正常可读的文字,如“祝福弥赛亚和塔”等。

\u3010Vocaloid 10\u3011Blessed Messiah and the Tower of AI\u3010Originl MV\u3011
\u3010Otomachi Una\u3011 Hate It! Hate It! Huge Ego!
\u3010Otomachi Una\u3011Melt \u3010Cover\u3011
\u3010GUMI\u3011 \u604b\u611b\u30c7\u30b3\u30ec\u30fc\u30c8 \u3010\u30aa\u30ea\u30b8\u30ca\u30ebMV\u3011

我已尝试运行cat FILE | hexdump -vcat FILE | iconv -f utf16,但没有成功。我甚至尝试了cat FILE | ascii2uni -a U -q,但它有一些图形缺陷,例如。

【Otomachi Una】Melt over】

如何正确编码这些字符?我更喜欢大多数unix系统中内置的命令。

2 个答案:

答案 0 :(得分:1)

这些是echo -e识别为表示Unicode字符的文字。

$ echo -e "$(<FILE)"
【Vocaloid 10】Blessed Messiah and the Tower of AI【Originl MV】
【Otomachi Una】 Hate It! Hate It! Huge Ego!
【Otomachi Una】Melt 【Cover】
【GUMI】 恋愛デコレート 【オリジナルMV】

答案 1 :(得分:1)

一个解决方案:

printf '%s' "$(<file)"

enter image description here

其中file是包含unicode文本的文件的名称