4

Bash 4.2 と zsh はサポートecho $'\u30a2'されていますが、一般的なシェル ユーティリティを使用してこれに代わるものはありますか?

$ ruby -e 'puts ARGV[0].chars.map{|c|c.ord.to_s(16)}.join(" ")' aäア
61 e4 30a2 1d400

これは、U+10000 またはそれ以上の文字では機能しません。

$ printf %s aäア | iconv -f $(locale charmap) -t UTF-16BE | xxd -p
006100e430a2d835dc00
4

2 に答える 2

3

単純な Python 2.7 スクリプトでこの作業を実行できます (a.py と呼びます) [以下のスクリプトは、シェルのエンコーディングがデフォルトで UTF8 であることを前提としています - 必要に応じて変更する必要がある場合があります]:

import sys

for i in unicode(sys.argv[1], 'utf-8'):
    print i.encode("utf_16_be").encode("hex")

テスト:

$ python a.py aäア
0061
00e4
30a2
d835dc00
于 2013-08-02T14:54:07.553 に答える