[Tep-j-develop] [Tep-j-general] Re: PHP-4.3 でのmb_substr() の挙動

Back to archive index

TAMURA Toshihiko tamur****@bitsc*****
2003年 3月 3日 (月) 10:13:23 JST


こんにちは、田村です。

> >   o mbstring関数の有無を判別をする箇所で、
> >     mb_internal_encoding() で内部エンコーディングを指定する。
> >   o 個々のmbstring関数では内部エンコーディングを指定しない。
> > 
> この件、{admin,catalog}/includes/languages/japanese.php に
> mb_internal_encoding(CHARSET);
> # CHARSET としたのは、EUC-JPだとは限らないのと、このファイルで、
> # CHARSETが define されていて、丁度良いと思ったからです。
> と加えておきましたが、これで良いでしょうか?

japanese.php で定義されている CHARSET は、

<meta http-equiv="Content-Type" 
 content="text/html; charset=<?php echo CHARSET; ?>">

のようにして使われる、
http_output (HTTP出力文字エンコーディング)の文字コードですね。
mb_internal_encoding()で指定したいのは、スクリプト自体で使う
内部文字エンコーディングなので、これはまた別に、

mb_internal_encoding("EUC-JP")

のようして、直接指定せざるをえないように思います。

mbstring関数の有無を判断する箇所というのは、
{admin,catalog}/includes/languages/japanese.php の中の、
それ以前にmbstring関数を呼んでいない場所が適当だと思います。
それで、佐藤さんの担当のmbstringラッパに関係しますが、
例えば、

if (function_exists('mb_detect_order')) {
    mb_internal_encoding('EUC-JP');
} else {
    include_once(DIR_WS_LANGUAGES . $language . '/jcode.phps');
    include_once(mbstringラッパを定義したファイル);
}

のようにすればいいのではないでしょうか。

-- 
田村敏彦 / 株式会社ビットスコープ
E-mail:tamur****@bitsc*****
http://www.bitscope.co.jp/




Tep-j-develop メーリングリストの案内
Back to archive index