Ruby,Perl,Pythonのメモ〜文字コード指定のまとめ〜
メモ:
・日本語の取り扱いのメモ のまとめ
・バージョンはruby 1.9.1p129,perl v5.10.0,Python 3.0.1
ruby | perl | python | |
---|---|---|---|
参考 | bitclust M17N の設計と実装 |
Encode入門 perl - use encoding; #は黒歴史 |
@IT記事 |
基本的な考え方 | 外部文字コードを内部文字コードに変換し、内部文字コードが何かを意識して処理する | 内部はUTF8で外部のコードを内部コードに変換して処理 | 内部はUnicode(UTF16orUTF32?)で外部のコードを内部コードに変換して処理 |
ソースコードの文字コード | コード冒頭に文字コード指定 | 基本的にUTF8で書く | コード冒頭に文字コード指定 |
文字列 | オブジェクト毎に文字コード定義 | バイナリとUTF8フラグ付き文字列 | Unicode(UTF16orUTF32?)文字列のみ |
文字列長 | 文字コード指定が正しいなら文字数 | utfフラグ付きなら文字数 | code unit数(文字数でない)*1 configureで--with-wide-unicodeすれば文字数 |
ファイルオープン | File.open(filename,"r:<ファイルの文字コード>:<プログラム内の文字コード>") | open $fh, "<:encoding(<ファイルの文字コード>)", $filename | f = codecs.open(filename,"r",<ファイルの文字コード>) |
ファイルオープンのメモ | ファイルの文字コードと取得する文字列の文字コードを指定する ファイルの文字コードのみを指定するとその文字コードの文字列を得る ファイルの文字コードとプログラム内の文字コードを同一に指定するとwarningが出る |
ファイルの文字コードを指定して、utf8フラグ付きの文字列を得る | ファイルの文字コードを指定してUnicode文字列を得る |
引数・引数オプション処理 | localeのまま取得? (でもwarning出る) |
内部で変換する | locale→Unicode文字列に自動変換? |
引数ライブラリ | OptionParser | Getopt::Long英語 Getopt::Long日本語 |
optparse英語 optparse日本語 |