PEAK XOOPS - PHP V4.4.4 にて文字化け in englishin japanese

PHP V4.4.4 にて文字化け

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum
Previous post - Next post | Parent - Children.1 .2 | Posted on 2007/1/6 11:22
pding  二等兵   Posts: 2
picalやmyalbum、いつも快適に使わせていただいております。

実は昨年末に契約しているレンタルサーバーでPHPのバージョンアップが実施されて以来、myalbumで文字化けの不具合が発生するようになってしまいました。

文字化けと言いましても、既にレコードに登録されているタイトルや説明文は正しく表示されています。

しかし、新規登録や、情報の修正をしようとすると、2バイト文字が「??」のようになってしまいます。

ただし、全ての2バイト文字が化けるのではなく、例えば、

「文字化け検証」 → 「??」

「テスト文字化け」 → 「テスト文字化け」 正常に表示されます。

いろいろ試した結果、先頭にカタカナがあれば、文字化けしないという不可解な現象に悩まされています。

応急処置として、

	//$title = $myts->stripSlashesGPC( $_POST["title"] ) ;
	//$desc_text = $myts->stripSlashesGPC( $_POST["desc_text"] ) ;
	$title = $myts->makeTboxData4Save( $_POST["title"] ) ;
	$desc_text = $myts->makeTareaData4Save( $_POST["desc_text"] ) ;

のようにしております。これであれば、どのような2バイト文字も正しく扱われます。

PHPのバージョンは、4.4.4 です。
myalbumのバージョンは、 2.87 ; // = 2.90 - 0.03 (beta1) です。

レンタルサーバーは、Speever です。

問題解決の参考になるような情報がありましたら、宜しくお願い致します。
Votes:5 Average:8.00
Previous post - Next post | Parent - No child | Posted on 2007/1/6 12:01
pding  二等兵   Posts: 2
自己解決できたかも知れません。

php.ini 及び、.htaccess の設定は真っ先に確認したつもりだったのですが、再度調整してみました。

最終的に、php.ini はプロバイダの設定に戻し、.htaccessを次のようにしてみました。


php_flag register_globals Off
php_value session.use_only_cookies 1
php_value default_charset EUC-JP
php_value mbstring.language Japanese
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.http_input auto
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation On
php_value mbstring.detect_order auto
php_value mbstring.substitute_character none
php_value output_handler none

これで、回避できたようです。お騒がせいたしました。
Votes:2 Average:5.00
Previous post - Next post | Parent - No child | Posted on 2007/1/7 5:07 | Last modified
GIJOE  先任軍曹   Posts: 4110
なんだか間違った結論のまま終わりそうなので一言。

PHP4.4.4のバージョン依存ではなく、単にそのサーバがPHPのバージョンを上げる際に、php.iniが書き換わった、なんて理由が一番ありがちです。

$title = $myts->makeTboxData4Save( $_POST["title"] ) ;

これ、要するにaddslashes()をかけているので、それで見かけ上直るのであれば、内部エンコーディングがShift_JISになっていた、なんてのがありがちでしょう。

いずれにせよ、これは明らかに間違った対応です。

生値を取得している部分で、SQL用エスケープ済文字列を取得したら、\ や ' がおかしくなります。
Votes:5 Average:10.00

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!