XOOPSモジュール開発研究所 UTF8化に挑戦中で文字化。 コミュニティ
ユーザメニュー
サイト内検索
XOOPSモジュール開発研究所ホーム パンくずリスト コミュニティ パンくずリスト UTF8化に挑戦中で文字化。

UTF8化に挑戦中で文字化。

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2008-10-5 23:16
sayaama  新米   投稿数: 11
こんにちは。sayaamaと申します。
JPEx、なかなかいい感触です。軽くて^^;
しかし、私は全てUTF-8で統一しているので、xoops2の時もなんとか自力でUTF-8にしました。
今回も挑戦したのですが、一部、文字化けを起こし、今のところ回避できていませんです。
あとは、地道な作業で追っていけばわかるかもしれないのですが、
ほんの一部なので、質問させていただきました。
ここでは画像がはれないので、
http://cosoto.net/php/alex/modules/nmblog/response.php?aid=108
に書き込みました。
時間があったらよろしくお願いします。

P.S. xoops2のときと同様、ディフォルトではリバースプロキシしたときに、
内部からでも外部からでもアクセスできるようにはなっていないので、その部分は別途
書き換えてます。

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-6 0:03 | 最終変更
monsuke  一人前   投稿数: 97
はじめまして。

ブログで紹介していただいてありがとうございます。

試しに当方でもUTF-8化してみましたが、インストール直後の状態は「ユーザメニュー」も「メインメニュー」も文字化けしませんでした。

環境も変更内容も分かりませんので推測になりますが、それらのいずれかに依存する原因ではないかと思います。

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-6 2:38
sayaama  新米   投稿数: 11
どうもRESありがとうございます。
まだ解明中ですが、
メニュー以外にもいくつかあり、
$rank = $db->fetchArray($result);
$aa = $rank['rank_title'];//デバッグ用
$bb = mb_detect_encoding($aa);//デバッグ用
としたときに、$bbが”EUC-JP”が返ってくる部分がありました。
なぜそうなるかは、また解明します。
少なくとも他ではUTF-8が戻ってきているから表示されていると思うので^^;^^;

また報告させていただきます。

WindowsServer2003/WindowsXP
Apache2.0.63
PHP5.2
MySQL5.0
s,sayama

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-10-6 6:58
monsuke  一人前   投稿数: 97
UTF-8化したソースをどこかにアップしていただければ、こちらで確認してみます。

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-6 13:58 | 最終変更
sayaama  新米   投稿数: 11
どうもありがとうございました。
自己解決しました。
一応、、【I'm engineer!】を自称してますんで^^;
問題は、これ。ini_settings.php
<?php
charcode=utf8;
/**
#Example: If your database character is EUC-JP
charcode=utf8
*/
?>
第1の間違い:このファイルがINIだとは知らずに、charcode=utf8;の記述を追加した。
第2の間違い:INIは通常、最初に出たやつが優先だろ!という、windows系知識にとらわれてしまっっていた。
ということで、無事にutf8の部分をutf8に書き換えて終了。
まだ1か所のみありますが、それはまた今度で。
今後ともよろしくお願いします。
●微妙に残っている箇所●

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-6 14:13
monsuke  一人前   投稿数: 97
なるほど、そこは間違えやすいかもしれません。
もうあと一息ですね。がんばってください。

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-6 18:18
sayaama  新米   投稿数: 11
文字化けっぽい表示はなぜかわからないけど、、出なくなりました。
なんかのなにやらでdebugコードとかもいれ、、いろいろやったあげく、
BOMらしきものの混入と勝手に思っています。
さぁて、、これから本格的に使ってみます。

どうもありがとうございました。

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-6 18:22
monsuke  一人前   投稿数: 97
こちらこそご丁寧にご報告いただきありがとうございました。

これからもメンテナンスを続けていきますので、よろしくお願いします。

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-7 13:33 | 最終変更
sayaama  新米   投稿数: 11
追加情報です。
ini_settings.phpの話ですが、結論から言うと、
【UTF-8でMySQL5の時は設定してはダメ】です。
 ※utf8に指定するのもNG

これは、MySQLの問題として、
【skip-character-set-client-handshake】問題
があり、これを設定してないと文字化けする可能性が高いのですが、、
JPExはまさにそれに該当します。

よって、結論から言うと、、
JPExをUTF-8化するにあたり、MySQL5の場合は、、
■skip-character-set-client-handshake が設定されており、defualtをUTF8にしている場合
 →JPExをUTF-8化において、charcode=utf8 を設定する。またはcharcode=には何も設定しない。
■skip-character-set-client-handshake が設定されていなく、defualtをUTF8にしている場合
 →JPExをUTF-8化において、charcode=utf8 を設定をしてはダメ。charcode=には何も設定しないこと。
または、class/database/mysqldatabase.phpにおいて
        if(defined('XOOPS_CHARCODE')){
            mysql_query("SET NAMES '" . addslashes(XOOPS_CHARCODE) . "'", $this->conn);
        }
をコメント化することでもOKです。

以上、よろしくお願いします。

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-10-7 14:16 | 最終変更
monsuke  一人前   投稿数: 97
追加情報ありがとうございます。

ini_settings.phpは、元々UTF-8化のための機能ではなく、EUC-JP文字コード環境で文字化けが発生する場合にSET NAMESクエリーを発行することによって回避できるパターンに対応するためのオプションです。
(EUC-JP環境の文字化けがSET NAMESクエリーですべて解決するわけではありませんが)

UTF-8化をされる方は、sayaamaさんのコメントを参考にしていただければと思います。

なお、ini_settings.phpのファイル名をリネームするか、ファイル自体を削除すれば、SET NAMESクエリーは発行されなくなります。

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-7 15:32
sayaama  新米   投稿数: 11
>EUC-JP文字コード環境で文字化けが発生する場合に???
なるほど。
何のための機能なのかと思っておりました^^;

ちなみに、ここのフォーラムは、
【リクエスト】【質問】【バグ報告】しかないのですが、
他愛もない情報というのは、どこに書いたらいいですか?

以上、よろしくお願いします。

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-10-7 17:13 | 最終変更
monsuke  一人前   投稿数: 97
ストイックなサイトなので雑談は禁止です。

・・・というのは冗談で、雑談フォーラムを作成しました。

  条件検索へ


XOOPSモジュール開発研究所ホーム パンくずリスト コミュニティ パンくずリスト UTF8化に挑戦中で文字化。