[PHP-dev 1102] Re: mbstring のエンコーディング名

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2005年 1月 18日 (火) 23:34:20 JST


小泉です。

強者ではないのですが、思ったところをコメントします。

On 2005/01/18, at 10:40, Hideki Noma wrote:

> mbstring モジュールについて確認しておきました。
> 結論からいうと、mbstring モジュールにおいて Shift_JIS では、
> cp932 なのか、 sjis なのかの区別をつけていないという
> ことになります。
> MIMEでは同一のShift_JISを用いられているが、PHP内では区別されるという
> 意味で、敢えてPHP内部では別の識別名をつけているようです。
> (Shift_JIS = SJIS という政治的な判断を避けたとも言えます)

MIME 名の方は mb_send_mail() や mb_encode_mimeheader() で使われるのみで、
つまり、CP932 でエンコードされたものを mbstring で MIME エンコードすると、

=?B?Shift_JIS?.........?=

のように変換されます。本来であれば Windows-31J を使うべきなのですが、
歴史的経緯からそのままになっていると思います。

そういう意味では区別をつけていないと思います。

> なんで、MIMEで使用される文字コード名とは別になっているのかは
> きちんとドキュメント化することが必要です。

そのとおりですね。現在英語ドキュメントの方を書いていますが、
時間がなくてなかなか完了できません。ご迷惑をお掛けしています。

> ただし、(preferred MIME name) は付加されていないので、
> MIMEで使用する場合に、何をCharacter code として用いればいいのかは
> 決められていません。
> → "Windows-31J" をMIMEで使用するのは望ましくないということになるようです。

preferred MIME name がないからといって、MIME で使用するのが
望ましくないわけではないと思いますよ。

IANA Character set registry というのは、どのコードセットが
preferred かどうかを示すものではないはずですし、表に載っているから
正当だというものでもないと思います (インターネットで使う事が
許される (may) 文字セットとは書かれていますが)。

# それでも、諸事情を考慮すれば、使うのは避けたほうが
# いいと思いますけどね。

しかし、余談ですけど、この手の議論には終わりがないんですよね…。
Shift_JIS だって、符号化方式の名称だと捉えれば、
CP932 だって Shift_JIS エンコードされた特定の文字集合な
わけですから、Shift_JIS と呼ぶ事も (ある文脈では) 間違いとは
言えないわけですし。

# アカデミックな立場を取るか、より実際的な立場を取るか、
# の違いなのかもしれません。



PHP-dev メーリングリストの案内