[Tep-j-general] Re: jcode error

Back to archive index

TAMURA Toshihiko tamur****@bitsc*****
2002年 12月 3日 (火) 10:08:36 JST


阿部さん、こんにちは。
田村です。

jcodeは使ってないんですが、書ける範囲で。

> 海外のヴァーチャルサーバを利用している環境の中で、
> インストールを試みたのですが、以下のようなエラーでちょっと中断しています。
> Fatal error: Failed opening required 'jcode.phps' (include_path='') in
> /includes/classes/email.php on line 22
> 
> https://sourceforge.jp/projects/tep-j/document/INST0001/ja/2/INST0001.txt
> にあります、「海外サーバーでの利用 」にしたがって変更を加え、
> spencernetworkからダウンロードした、jcodeをemail.phpと全く同じフォルダーに設
> 置したにもかかわらず、
> require_once('jcode.phps');
> では、パスがとおっていないようです。

email.php 自体も、catalog ディレクトリのスクリプト()からインクルード
されていますので、require_once('jcode.phps'); と書くのであれば、
jcode.phps を catalog ディレクトリに置けばインクルードされるのでは?


> 質問としては、上記のspencernetworkにあるjcodeは
> どのバージョンでもOKなのでしょうか、また、付属でついてくるjcode_wrapper.php
> などは無視して、
> 単に、'jcode.phps'だけを設置すればよいものなのでしょうか?

どのバージョンでもOKとはいかないと思いますが、
jcode.phps だけを使えばいいんだと思います。


> そして、大橋さんの以下のような記述にあるように、jcode.phpsの一部を修正してか
> ら、サーバーにコピーしたのですが
> これは正しい方法ですか?
> 原因がおわかりの方おりましたら、是非教えてください。
> 
> (4) 次に mb_substr関数を使っている部分を変更します。
>   まず、jcode v1.31 におまけで付属している jsubstr()関数にはタイプミスと
>   思われるバグがありますので、修正します。
> 
>   $jstr[] = chr($b[$i], $b[$i+1]);   の部分を
>    $jstr[] = chr($b[$i]).chr($b[$i+1]); に修正します。

それでいいと思います。

ちなみに、jcode 1.34 をダウンロードしてみると、jsubstr()は修正されていて、
一部を取り出すと次のようになっています。

> for ($i = 1; $i <= $m; ++$i) {
>   if ($b[$i] >= 0x80) {  //Japanese
>     $jstr[] = chr($b[$i]).chr($b[++$i]);
>   } else {  //ASCII
>     $jstr[] = chr($b[$i]);
>   }
> }

$i はループごとにカウントアップされているので、
chr($b[$i]).chr($b[$i+1]) と chr($b[$i]).chr($b[++$i]) は
意味が違ってきますね(他の部分の変更とも関連しているのかもしれません)。
jcode 1.34 をそのまま使ってもいいような...


> カタログ内のメーカー名を表示するプルダウンリストの中身が、すっかり文字化けを
> 起こしています。

メーカー名全体が化けるんですか? それとも、文字列の末尾が化けるんですか?
mb_substr - jsubstr 関連の現象かもしれません。

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




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