作者: T.Watanabe
日時: 2007/1/20(10:48)
  ねこ丸です。

  遅くなってごめんなさい。なんか一人で vmware 祭りとか盛り上がってました。

Bruce. wrote:

> んと "\xe0\xa1\xa1 ..." とかということですか?
> まあutf-8はlead-byte と trail-byteで固有のパターンを持ちますので

  いへ。"日本語" って書いちゃってます。
  で、以下に続きます。

>>   いや何が気になっているかと言うと、みなさんは内部エンコーディングの変
>> 更を大量のファイルに対して行わなきゃいけなくなった場合はどうするのかな
>> と思ったもので。まぁ、ぶっちゃけ目の前に euc-jp で書かれた大量の PHP の
>> ファイルがあるわけですが、これ、将来的に utf-8 にしますって話になったら
>> どうすんのかなーと。まぁいつもは想像しただけで怖くなって無視してるんで
>> すが、何か方法あるんなら嬉しいなと思った次第です。
> 
> んーここでいう「内部エンコーディング」とは具体的には何を意味している
> のでしょうか?
> スクリプト中に記述するときのエンコーディング?

  すいません、これは PHP 用語ですね。

  内部エンコーディング
      スクリプトが文字列のエンコーディングとして想定しているもの
  スクリプトエンコーディング
      スクリプトの記述に利用するエンコーディング

  のはずです。(違ったらごめんなさい。)Ruby で言うと -K オプションに当
たるのかな?

  で、上のように生で書いちゃってるので、スクリプトエンコーディングと内部
エンコーディングは当然一致してないと困るのです。これをしかし Python のように

  u"日本語"

  と書けるのであれば、ファイル自体は euc-jp でもそこに書かれている日本語
の文字列を utf-8 として処理するっていうのが可能なんじゃないかなと思った
わけです。そうするとリポジトリ内のファイルのエンコーディングをど
ばーーーーっとまとめて変更しなくても、ちまちま変更していくことは可能だ
なーと思ったわけです。


  まぁ、皆さん仰るように触らぬ神に祟りなしですし、急ぎの要求はないのです
が、個人的に心配になるケースもなくはないので utf-8 に移行できるならした
方がいいのかなーという気持ちもあるんですね。というのも、レガシーなサイト
でよくある作りは

  内部               euc-jp
  HTTP出力           sjis
  期待されるHTTP入力  sjis

  だと思うんですけど、euc-jp と sjis ってあんがい誤判定が起きますよね?
 内部が utf-8 になっても誤判定は起きますけど、

1. 内部 euc-jp で誤判定に基づいて euc-jp に変換された(はずの)文字列を扱う
2. 内部 utf-8  で誤判定に基づいて utf-8 に変換された(はずの)文字列を扱う

  のは 2 の方が安全じゃないか?と思ったわけです。1 のケースでは euc-jp
のつもりで sjis の文字列が突っ込まれちゃうことがあったりしないかな?と。
でも調べると utf-8 は utf-8 でいろいろややこしそうですねぇ。

  とりあえず PHP に絞っちゃうと言語側の機能がまだ強化途中ですし、何かや
るとしてもバージョンを上げるのが先ですから、その間に必要な勉強をしていこ
うと思います。中途半端な「対応」は墓穴を掘りますからね。

--
    ねこ丸