アプリ版:「スタンプのみでお礼する」機能のリリースについて

私自身の手違いにより、UTF-8で作っていたデータベース内の日本語文字が全て壊れてしまい、そのデータを基に再度作り直しているところなのですが。
(文字が『ワタãƒ』←投稿時に特殊文字が含められないのでこんな書き方になりましたが、全ての日本語がこんな感じの状態になりました…)

私のローカル環境では、その壊れた文字もPHP上で正しい日本語で表示されてします。
しかし別のサーバー環境では、壊れた文字のままPHP上で表示されます。
データベースファイルの移動は、.sqlファイルを使ってphpmyadminでエクスポート、インポートしました。
PHPファイルは同じものを使っています。
php.iniやmy.iniの設定は、ローカルと別サーバーで違うかもしれません。

別サーバーに移動しても正しく表示できるようにする方法が思い当たる方、回答お願いします。

あわよくば、この文字コードの壊れたデータベースをまるごと復旧させられる方法とか、もしあるならばお願いします!



●ローカル環境
XAMPP 1.6.7 (Apache 2.2.9 / MySQL 5.0.51b / PHP 5.2.6 / phpMyAdmin 2.11.7)
●別サーバー環境
MySQL 4.0.22 (これ以外わかりません…ステップサーバーを使用しています)

A 回答 (2件)

多少混線されているのではないかと。


(すみません。自分もこの件では往生しましたので)
>私のローカル環境では、その壊れた文字もPHP上で
>正しい日本語で表示されてします。
これはデータが壊れている訳ではないということでしょう。
むしろ化け文字に見えてしまう環境がうまく設定できていないと、
考えないと迷路にはまってしまうような感じがします。

有名な話ですが、MySQL 4.0 と 5.0 では天と地ほどの
差があります。(少々誇張ですが)
ローカルがUTF8とのことですが、別サーバーがSJISか
UNIかを正確に把握してデータを移動してあげないと、
MySQL 4.0 はコード変換機能をもっていないので、
そのまま表示されて化け文字になってしまいます。

このトラブルでの情報は多く載っていますので、まず、
「mysql 5 文字化け」で検索してみることをおすすめします。

この回答への補足

ローカルの設定は恐らく上手くいっていると思います(SHOW VARIABLES LIKE "char%"で確認→データベースの照合順序もutf8です)

元データで『化けている部分』は、エクスポートした時点で既に化けているので、元データからして化けているものと思います。
よって今回の場合は、別サーバーとの文字コードの相性は関係ないかもしれません…。
というより、元データからして壊れているのであればこの場で質問することではなかったかもしれません…。

質問の意図を正しくお伝えできず、申し訳ありません。

しばらくしたら回答締め切りします

補足日時:2008/08/20 12:31
    • good
    • 0

MySQL 4.0はunicode を解釈出来ません。

でも、ただのbineryデータとして格納しますので、取り出したphp側で、unicode と認識してページの文字コードに変換出来れば、ちゃんと表示できるとは思いますが、php側の書き換えが必要になってくるでしょう。
また、その場合でも、like 検索などでうまく一致させられない可能性があるかもしれません。

ローカルのMysql5.0のデータをsqlファイルなどに書き出して別サーバーへ持っていくのなら、
書き出したファイルをphpまたは、editorなどで、別サーバーのmysqlに設定されている文字コードに変換した上でimportした方がよいでしょう。
別サーバーのphpやmysqlの文字コード設定についてもきちんと調査すべきです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!