Unicodeコードポイント[0-9A-F]をbashから印刷可能な文字に変換するには?

Unicodeコードポイント[0-9A-F]をbashから印刷可能な文字に変換するには?

Unicodeコードポイントのリストがありますが、これらの16進値をその文字が表す実際の文字に変換する「簡単」な方法がわかりません...

私は聞いた扱いにくいはいecho -e '\u0965'、しかし私は強く打つ4.1。

bashのzshメソッドと同じくらい簡単なことはありますか?

ベストアンサー1

iconvでGNU coreutilsでbashのechoまたは/bin/echoを使用できます。

echo -ne '\x09\x65' | iconv -f utf-16be

デフォルトでは、 iconv はロケールエンコーディングに変換されます。おそらく、Perlは特定のシェルやechoコマンドに頼るよりも移植性が良いでしょう。私が知っているほとんどのUNIXシステムはPerlを提供し、Windowsポートもいくつかあります。

perl -C -e 'print chr 0x0965'

ほとんどの場合、これを行う必要がある場合は、組み込みのサポート機能を備えたVim / GVimなどのエディタを使用してください。挿入モードでCtrl-Vを押し、uを押してから4つの16進文字を入力します。 U + FFFF以外の文字が必要な場合は、大文字Uを使用して8つの16進文字を入力してください。 Vimは簡単に作成できるカスタムキーマップもサポートしています。一連の文字を別の記号に変換します。たとえば、私はTMを™に、(C)を©に、(R)を®に変換するwwwというキーマップを開発しました。必要な場合に備えて、Klingonのキーマップも持っています。 Emacsにも似たものがあると確信しています。 GVimおよびGNOME端末を含むGTK +アプリケーションを使用している場合は、Control-Shift-uの後に4つの16進文字を入力してUnicode文字を作成できます。 KDE/Qtにも同様のものがあると確信しています。

修正する:Bash 4.2からは、今は組み込み機能のようです。

echo $'\u0965'

修正する:また、最近ではPerlよりもPythonの例を好むかもしれません。これはPython 2と3の両方で動作します。

python -c 'print(u"\u0965")'

おすすめ記事