テキストファイルの\UXXXXXXXXXX Unicodeコードの解釈

テキストファイルの\UXXXXXXXXXX Unicodeコードの解釈

次のファイルがあります。

$ cat test
Villes visit\U000000e9es

このコードをどのように解釈しますか\UXXXXXXXX?たとえば、次の方法は何ですか?

$ cat test | pipe into something
Villes visitées

ベストアンサー1

そしてperl

$ perl -C -pe 's/\\U([[:xdigit:]]{8})/chr hex$1/ge' <yourfile
Villes visitées

ロケールが文字マップとしてUTF-8を使用すると仮定すると、\UXXXXXXXXU + XXXXXXXX文字のUTF-8エンコーディングに変換されます。Oユーザーのロケールに関係なくUTF-8出力を取得するには、-Cに変更します-CO

éユーザーロケールの正しいエンコーディングの文字に変換するには(ユーザーロケール文字セットにその文字があると仮定):

perl -Mopen=locale -pe 's/\\U([[:xdigit:]]{8})/chr hex$1/ge' <yourfile

たとえば、ロケールでは0xe9バイト(fr_CH.iso88591ISO8859-1のエンコード)に変換され、ロケールでは0x88 0x6d(BIG5-HKSCSのエンコード)に変換されます。ロケールの 0xc3 0xa9 (UTF-8 エンコード)。ロケールではISO8859-6に文字がないので。ézh_HK.big5hkscsfr_FR.UTF-8ar_AE.iso88596éVilles visit\x{00e9}es

あるいは、ICU uconvicu-devtoolsDebianベースのシステムのパッケージにある)を使用して申請することもできます。Hex/C-Any 切り替える:

uconv -x hex/c-any <your-file

理解して\uXXXX並べ\UXXXXXXXX替えます(もっと使う場合hex-any)UTF-8に出力されます。iconv -f utf-8ユーザーのロケールに出力をパイプします(エンコードできない文字をスキップするオプションも参照)iconv-c

$ printf '%s\n' '&#233; &#xe9; \x{e9} U+00E9 \u00e9 \U000000e9 \U0001F427 \ud83d\udc27' | uconv -x hex/c-any
&#233; &#xe9; \x{e9} U+00E9 é é 

おすすめ記事