How My Heart Sings

Sat, 25 Jun 2005

CotEditor用のスクリプトを書いてみるそのなななななな

昨日のエントリ、CotEditor用に書いたスクリプトの実行時に文字化けが発生して困った、という話しの続き。作者の中の人の方から示唆を頂いたのを参考に、スクリプトの要所で文字コードがどのようになっているのか調べてみました。示唆の内容は次の通り。

シェルスクリプトからアップルスクリプトを呼び出す段階で 「osascript」コマンドが使われてますが、どうやらこれは与えられた文字列をデフォルトCエンコーディング(日本語の場合はShift-JIS)で解釈するようです。化け方も、UTF-8をShift-JISで読み込んだときと同じでした。

変換処理を行なう元ファイルは日本語EUCで改行コードがCR/LFなもの。んで、変換用のシェルスクリプトは次の通り。

#! /bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%

INPUT=`cat - | tee ~/Desktop/INPUT.txt`

echo "<kbd>${INPUT}</kbd>" | tee ~/Desktop/OUTPUT.txt

変換後にDesktop/INPUT.txtDesktop/OUTPUT.txtを開いてみると…UTF-8LFになっていました。CotEditorからスクリプトに処理が渡った時点で文字コードと改行コードの変換が行なわれているということでしょうか。逆に、スクリプトからCotEditorに処理が返った時点でもう一度変換が行なわれているのか…この処理の間にAppleScriptが入った場合におかしなことになる、と。

もうちょっと実験。次のように書いて、処理中の文字コードを変えてやると、どうなるでしょう。…/usr/bin/teeが吐いたファイルの中身は、今度は変換したなりの文字コードのものでした。元ファイルの文字コードとは違うコードへ変換したのですが、文字化けは無し。

#! /bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%

INPUT=`cat - | /usr/local/bin/lv -Iu8 -Os | tee ~/Desktop/INPUT.txt`

echo "<kbd>${INPUT}</kbd>" | tee ~/Desktop/OUTPUT.txt

さて、AppleScript側にShift-jisで渡せるようになったので、前回のスクリプトを修正して、でわさっそく…やっぱり文字化けしました。うーん…寝るかな。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Comments

Add Comment...

スパム対策のため、一ヶ月を経過したエントリにはコメントを書き込めないのです…後、http:と書くこともできません。

Name:

Comment:

Le violon intérieur....
Yasuo Yamashita
vaiorinnhiATTOnaDOTrimDOTorjye-pi-
Y.A.S.U.O Ytterbium Artificial Sabotage and Utility Organism Y.A.S.U.O Yelling Abomination from the Sunless Underground Oasis

Pyblosxom and plugins. For detail, see http://viole.sakura.ne.jp/blosxom/blosxom.cgi/plugin_info