web-dev-qa-db-ja.com

エンスクリプトに渡す前にテキストを処理するにはどうすればよいですか? (または、UTF8 MuttメッセージをPDFに印刷するにはどうすればよいですか?)

enscriptを使用してMuttからPDFを印刷しようとしていますが、中引用符で文字エンコードの問題が発生しています。そのため、次のようなテキストを含む電子メール:

“very dirty”    
we’re 

次のようになります:

â\200\234very dirtyâ\200\235
weâ\200\231re

私の印刷スクリプトは現在次のようになっています。

#!/usr/bin/env sh
INPUT="$1" PDIR="$HOME/Desktop" OPEN_PDF=evince



tmpfile="`mktemp $PDIR/mutt_XXXXXXXX.pdf`"
enscript --font=Courier8 $INPUT -2r --Word-wrap --fancy-header=mutt -p - 2>/dev/null | ps2pdf - $tmpfile
$OPEN_PDF $tmpfile >/dev/null 2>&1 &
sleep 1
rm $tmpfile

enscriptに送信する前に、中引用符を置き換える方法はありますか?または、引用符を処理するために使用できる文字エンコードですか?

MuttからPDF)に印刷する別の(より良い?)方法がある場合、私はすべての耳です。見積もりが汚されないようにする必要があります。

2
Amanda

どうやら、enscriptはUTF-8ファイルをサポートしていません

引用符をエンスクリプトに入れる前に、sedを使用して引用符を変更することをお勧めします。

これにより、引用符が標準の"および'に変更されます。変換後は元に戻すことはできません。これを行うには、エンスクリプト行のすぐ上に次のような行を挿入します。

sed -i "s/[”“]/\"/g; s/[‘’]/'/g" $tmpfile

iconvを使用してテキストを他のエンコーディングに変換することもできますが、そのプログラムについてはよくわかりません。調べる価値があるかもしれません。

1
apricot boy