キーワード

プロフィール

深沢千尋

Author:深沢千尋
みなさんこんにちは、深沢千尋です。(公式ページ
文字コード【超】研究 改訂第2版NEW!」「すぐわかるPerl」「すぐわかる オブジェクト指向 Perl」の著者です。
ここでは、多くは技術的でないこと、ごくまれに技術的なことをなげやりに書いていきます。
メールは suguwakaruPerl@gmail.com まで。(アットマークは ASCII に)
Twitterはじめました。@query1000です。よろしく~

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

QRコード

QRコード

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「まるごとEncode」解題(9)Encode がサポートしている文字コードの一覧表示

続き。
Encode がサポートしている文字コードの一覧を表示するには、以下のようなプログラムを実行する。

#! perl
# listEncodings.pl -- サポートしている文字コードの一覧表示

use Encode;
#use Encode::EUCJPMS;
#use Encode::JavaScript::UCS;
#use FukazawaSmile::FukazawaSmile;

print "$_\n" for (Encode->encodings(":all"))

__END__

実行結果。

F:\Dropbox20091029\My Dropbox\Marugoto>listEncodings.pl
7bit-jis
AdobeStandardEncoding
AdobeSymbol
AdobeZdingbat
ascii
ascii-ctrl
big5-eten
big5-hkscs
cp1006
cp1026
cp1047
cp1250
cp1251
cp1252
cp1253
cp1254
cp1255
cp1256
cp1257
cp1258
cp37
cp424
cp437
cp500
cp737
cp775
cp850
cp852
cp855
cp856
cp857
cp858
cp860
cp861
cp862
cp863
cp864
cp865
cp866
cp869
cp874
cp875
cp932
cp936
cp949
cp950
dingbats
euc-cn
euc-jp
euc-kr
gb12345-raw
gb2312-raw
gsm0338
hp-roman8
hz
iso-2022-jp
iso-2022-jp-1
iso-2022-kr
iso-8859-1
iso-8859-10
iso-8859-11
iso-8859-13
iso-8859-14
iso-8859-15
iso-8859-16
iso-8859-2
iso-8859-3
iso-8859-4
iso-8859-5
iso-8859-6
iso-8859-7
iso-8859-8
iso-8859-9
iso-ir-165
jis0201-raw
jis0208-raw
jis0212-raw
johab
koi8-f
koi8-r
koi8-u
ksc5601-raw
MacArabic
MacCentralEurRoman
MacChineseSimp
MacChineseTrad
MacCroatian
MacCyrillic
MacDingbats
MacFarsi
MacGreek
MacHebrew
MacIcelandic
MacJapanese
MacKorean
MacRoman
MacRomanian
MacRumanian
MacSami
MacSymbol
MacThai
MacTurkish
MacUkrainian
MIME-B
MIME-Header
MIME-Header-ISO_2022_JP
MIME-Q
nextstep
null
posix-bc
shiftjis
symbol
UCS-2BE
UCS-2LE
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UTF-7
utf-8-strict
utf8
viscii

元原稿ではワンライナーだった。
ぼくはめったにワンライナーを使わないが挑戦してみよう~

F:\>perl -MEncode -le 'print for (Encode->encodings(":all"))'
Can't find string terminator "'" anywhere before EOF at -e line 1.

ダメじゃな。

F:\>perl -MEncode -le "print for (Encode->encodings(':all'))"
7bit-jis
AdobeStandardEncoding
AdobeSymbol
AdobeZdingbat
ascii
ascii-ctrl
...

これだとうまく行った。

DOS 窓はクォートとして "" しか使えないようだ。
ちなみに、DOS 窓に対してワンライナーを渡すためのクォートとして "" を使っているので、その中の encodings に引数を渡すクォートは '' にしている。
もとの原稿は逆にしている。

ちなみに Mac の bash は外が '' で中が "" でも、逆でもうまくいった。

一応元プログラムを解説すると

for (Encode->encodings(':all')) {
print "$_\n";
}

でも同じこと。

for $encoding (Encode->encodings(':all')) {
print $encoding, "\n";
}

でも同じだ。

では、なぜワンライナーでは \n を挟まないのに改行をしてくれたかというと、perl コマンドに -l オプションを渡していたから。
これを渡すと勝手に行処理をする(読み込みは chomp してくれ、書き込みは \n を付与する)

プログラム版で

#! perl -l
# listEncodings.pl -- サポートしている文字コードの一覧表示

use Encode;
#use Encode::EUCJPMS;
#use Encode::JavaScript::UCS;
#use FukazawaSmile::FukazawaSmile;

print for (Encode->encodings(":all"))

__END__

と、シュバング行 #! に -l を渡しても同じだ。

Windows でシュバング行を書いても意味がないような気がするが、実際にはこうやってコマンドラインオプションを渡せて便利なのである。

ちなみに #! は英語で shebang だが外人が言っているのを聞くとシュベイングに聞こえる。
ぼくはシュバングと書いているが日本語の表記としてはシェバングが一般的なようだ。
「シュバング UNIX」が Google で 700 ぐらい、「シェバング UNIX」だと 1400 ぐらい。
she の e はシュワ(schwa、あいまい母音、http://www.bbc.co.uk/worldservice/learningenglish/grammar/pron/sounds/vowel_short_5.shtml)だ。
スポンサーサイト

<< 「まるごとEncode」解題(10)文字コードの本名を調べる | ホーム | 「まるごとEncode」解題(8)ファイル処理(2) >>


コメント

コメントの投稿


管理者にだけ表示を許可する

 ホーム 


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。