web-dev-qa-db-ja.com

シェルスクリプトの文字エンコードを変更するにはどうすればよいですか?

私は Gina Trapianiの優れたtodo.sh を使用して私のtodoリストを整理しています。

しかし、デーンである場合、スクリプトがøやæのような特別なデンマーク文字を受け入れたとしたら、それは素晴らしいことです。

私は絶対的なUNIX-n00bなので、これを修正する方法を誰かに教えてもらえたらとても助かります。 :)

16
timkl

このコマンドは何を示していますか?

locale

次のように表示されます。

LC_CTYPE="da_DK.UTF-8"
LC_NUMERIC="da_DK.UTF-8"
LC_TIME="da_DK.UTF-8"
LC_COLLATE="da_DK.UTF-8"
LC_MONETARY="da_DK.UTF-8"
LC_MESSAGES="da_DK.UTF-8"
LC_PAPER="da_DK.UTF-8"
LC_NAME="da_DK.UTF-8"
LC_ADDRESS="da_DK.UTF-8"
LC_TELEPHONE="da_DK.UTF-8"
LC_MEASUREMENT="da_DK.UTF-8"
LC_IDENTIFICATION="da_DK.UTF-8"
LC_ALL=

そうでない場合は、スクリプトを実行する前にこれを試してみてください。

LANG=da_DK.UTF-8

スクリプトを実行してこれらの文字に遭遇したときに何が起こるかは言いません。それらはtodoファイルにありますか?それらはプロンプトで入力されますか?エラーメッセージはありますか?予想される出力の代わりに何か出力がありますか?

これを試して、何が得られるかを確認してください。

read -p "Enter some characters" string
echo "$string"

ゆっくりと、Unixの世界はASCIIおよびその他の地域エンコーディングからUTF-8に移行します。最新のxtermやPuTTYなどのUTF端末を実行している必要があります。

〜/ .bash_profileで、言語をUTF-8バリアントの1つに設定します。

export LANG=C.UTF-8
or
export LANG=en_AU.UTF-8
etc..

これで、ターミナルでUTF-8文字を書き、bashスクリプトに含めることができるはずです。

#!/bin/bash
echo "UTF-8 is græat ☺"

参照: https://serverfault.com/questions/11015/utf-8-and-Shell-scripts

17
brianegge