作者: Bruce.
日時: 2007/2/16(14:27)
Bruce.です。

ずるずると一ヶ月近く経ってしまいました。
#「五島勉」って「ごとうべん」だよねえ

T.Watanabe writes:

> > んーここでいう「内部エンコーディング」とは具体的には何を意味している
> > のでしょうか?
> > スクリプト中に記述するときのエンコーディング?
> 
>   すいません、これは PHP 用語ですね。
> 
>   内部エンコーディング
>       スクリプトが文字列のエンコーディングとして想定しているもの
>   スクリプトエンコーディング
>       スクリプトの記述に利用するエンコーディング
> 
>   のはずです。(違ったらごめんなさい。)Ruby で言うと -K オプションに当
> たるのかな?

ちょうど? この辺に絡んだ話題が盛り上がってますね。

odz buffer - 文字化け
http://d.hatena.ne.jp/odz/20070215/1171555360

よくきたはてダ - 惜しいが間違っている
http://d.hatena.ne.jp/elf/20070214/1171381343

PHPの文字化けを本気で解決する - ぎじゅっやさん
http://hain.jp/index.php/tech-j/2007/02/13/p125


まあ同じようなもののようですね。


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

これをやるためには基準となるエンコーディング(≒Unicode)が必要となるわけで、
それはそれで茨の道ではないかと。単に符号拡張すればいいASCII圏の方々には
わかってもらいにくい数々の障壁がそこにはあるのですよ。
欧州の言語(フランス語とかドイツ語とか)でもひっかかることあるんだけどねい。


>   まぁ、皆さん仰るように触らぬ神に祟りなしですし、急ぎの要求はないのです
> が、個人的に心配になるケースもなくはないので utf-8 に移行できるならした
> 方がいいのかなーという気持ちもあるんですね。というのも、レガシーなサイト
> でよくある作りは
> 
>   内部               euc-jp
>   HTTP出力           sjis
>   期待されるHTTP入力  sjis
> 
>   だと思うんですけど、euc-jp と sjis ってあんがい誤判定が起きますよね?

euc-jpかsjisかの二択ならまあがんばれば(統計情報とかを活用)ある程度は
誤判定を避けられると思いますが、元文字列が十分な長さを持っていないとか
だと厳しいでしょうね。とくにそこに半角かながあったりすると。

ただPHPの場合はほかのスクリプティング言語と違って、生のテキストファイル
を扱うことはあまりないように思われるので、テキストストリームのビット
パターンから判定することはしないほうがかえって良いかも。

先のblogでも触れられていたと思いますが、webに関していえば今日では
自動変換を使うことの意味はほぼないんじゃないですかねえ。腐れたブラウザも
もう無視できるほどしかないでしょう。

いじょ。