0

©著作権記号と英ポンド記号£をbashスクリプトに挿入する適切な方法は何ですか。

私はnanoエディターとして使用しており、DebianSqueezeを実行しています。

ウィンドウからシンボルをコピーして貼り付けると、機能しますが、nano表示できない非表示の文字が貼り付けられているように見え、シェルスクリプトでコードを編集するのが難しくなります。

だから例えば私はこれをできるようにしたい:-

text="£15.00"
text2="© John Doe"
4

3 に答える 3

2

これらの記号をサポートしていないロケールを使用しているようです(昔は、フォントが悪い可能性もありました)。UTF-8文字(Windowsではデフォルト)を使用しているため、LinuxではUTF-8対応の環境にいる必要もあります。locale次のコマンドで確認できます。

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

したがって、私のシステムは問題ありませんが、デフォルトのASCIICロケールが設定されています。これらは単純なbash変数であるため、export個別に使用することも、すべてをオーバーライドすることもできます(を設定することによりLC_ALL)。ただし、これは現在のシェルにのみ影響するため、毎回自動的に機能するようにシェルの初期化の一部にする必要があります。

これは通常、/etcグローバルにプロファイルスクリプトを介して実行されますが、.bash_profileまたは.bashrc同様に機能します。お使いのバージョンのDebianでは、ロケールがに保存されて/etc/default/localeおり、次のように使用可能な選択肢のリストを取得できますlocale -a

$ locale -a
C
en_US
en_US.iso88591
en_US.utf8
POSIX
sl_SI.utf8

接尾辞がutf8の1つを選択します。他のロケール(たとえば、日本語)が必要な場合は、localedef / locale-gen(付属glibcまたは別のパッケージとして)を使用して生成できます。

于 2012-07-04T21:16:27.683 に答える
1

著作権には(C)を使用する方がよいでしょう。違反に対する防御ではなく、他のロケールで常に読み取り可能にする必要があります。

ディスプレイは次のようになります

text="1.00"
text2=" ohn Doe"

私のテスト端末で。

于 2012-07-04T20:35:08.290 に答える
1

nanoでの記号の入力に問題がある場合は、エスケープ構文を使用してください。iconvこれを使用して、現在のロケールに対応する出力エンコーディングに変換できます。

text=$'\xa315.00'
text2=$'\xa9 John Doe'
iconv -f latin1 <<< $text
iconv -f latin1 <<< $text2

またはutf8でも同じです:

text=$'\xc2\xa315.00'
text2=$'\xc2\xa9 John Doe'
iconv -f utf-8 <<< $text
iconv -f utf-8 <<< $text2
于 2012-07-04T21:36:55.210 に答える