作者: Bruce.
日時: 2006/9/15(12:23)
Bruce.です。

閑舎 writes:

> > PythonはPerlと違って、スクリプトをShiftJISで記述しても
> > 問題ないし。
> 
> 正規表現部分も含めてですか? Perl だと、正規表現は SJIS でなくても他に
> EUC-JP なら無問題のスクリプトが SJIS になっただけで訳のわからんエラーに
> なることがありますが、そういったレベルのエラーがない、ということですか?

上で問題ないといっているのは例えば

  $str = "一覧表"

とかしたときに素のPerlではエラーになります(use encoding 'sjis' で
回避できるけど別の問題を持ち込むことになる)。自分でEncodeモジュール
やJcodeモジュールのメソッドを使って変換するにしても、スクリプト自体
をShiftJISで記述することには問題があります。

一方Pythonでは

スクリプトの1,2行目あたりに
# coding: mbcs
とか書いておくとこの一覧表問題は起きません。Unicode化していない
文字列はあくまでバイト列であり、マルチバイトデータが入っていても
独立したバイトの並びとしかみなされませんので、正規表現演算を
適用しようとしても多分思い通りには行きません。が、Perlのダブル
クォートで括った文字列中に置かれたShiftJIS文字列のように
カタストロフを起こしたりはしません。

@A = qw(hello world);
print "ァA";

をjperlでないperlで実行してみてください。

まあそんなところです。

いじょ。