• ベストアンサー

壊れた日本語文字への対応

私自身の手違いにより、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 (これ以外わかりません…ステップサーバーを使用しています)

noname#65290
noname#65290
  • MySQL
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • id357
  • ベストアンサー率29% (39/133)
回答No.1

多少混線されているのではないかと。 (すみません。自分もこの件では往生しましたので) >私のローカル環境では、その壊れた文字もPHP上で >正しい日本語で表示されてします。 これはデータが壊れている訳ではないということでしょう。 むしろ化け文字に見えてしまう環境がうまく設定できていないと、 考えないと迷路にはまってしまうような感じがします。 有名な話ですが、MySQL 4.0 と 5.0 では天と地ほどの 差があります。(少々誇張ですが) ローカルがUTF8とのことですが、別サーバーがSJISか UNIかを正確に把握してデータを移動してあげないと、 MySQL 4.0 はコード変換機能をもっていないので、 そのまま表示されて化け文字になってしまいます。 このトラブルでの情報は多く載っていますので、まず、 「mysql 5 文字化け」で検索してみることをおすすめします。

noname#65290
質問者

補足

ローカルの設定は恐らく上手くいっていると思います(SHOW VARIABLES LIKE "char%"で確認→データベースの照合順序もutf8です) 元データで『化けている部分』は、エクスポートした時点で既に化けているので、元データからして化けているものと思います。 よって今回の場合は、別サーバーとの文字コードの相性は関係ないかもしれません…。 というより、元データからして壊れているのであればこの場で質問することではなかったかもしれません…。 質問の意図を正しくお伝えできず、申し訳ありません。 しばらくしたら回答締め切りします

その他の回答 (1)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

MySQL 4.0はunicode を解釈出来ません。でも、ただのbineryデータとして格納しますので、取り出したphp側で、unicode と認識してページの文字コードに変換出来れば、ちゃんと表示できるとは思いますが、php側の書き換えが必要になってくるでしょう。 また、その場合でも、like 検索などでうまく一致させられない可能性があるかもしれません。 ローカルのMysql5.0のデータをsqlファイルなどに書き出して別サーバーへ持っていくのなら、 書き出したファイルをphpまたは、editorなどで、別サーバーのmysqlに設定されている文字コードに変換した上でimportした方がよいでしょう。 別サーバーのphpやmysqlの文字コード設定についてもきちんと調査すべきです。

関連するQ&A

  • MySQLへの吐き出し日本語が文字化けする

    自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

    • ベストアンサー
    • PHP
  • DB内の日本語データがPHPで取得できない

    利用サーバ:さくらインターネットのレンタルサーバ 利用データベースのバージョン:MySQL 5.1 PHPのバージョン:PHP 5.2.×× PHPMyAdminに記載のMySQL の文字セット: UTF-8 Unicode (utf8) PHPMyAdminに記載のMySQL 接続の照合順序: utf8_general_ci htmlやPHPファイルを、EUC-JPからUTF-8に、全て変えたためなのかは分かりませんが、 データベースに格納されている日本語(というか全角文字?)データを、 PHPで取り出せなくなってしまいました。半角英数字のデータは取得できます。 そのためDBから取得して表示させている文字データのうち、日本語のみが表示されません。 【php.iniファイルの中身】 register_globals = "On" mbstring.language = "Japanese" mbstring.internal_encoding = "UTF-8" mbstring.encoding_translation = "On" default_charset = "UTF-8" output_buffering = "Off" mbstring.http_input = "auto" mbstring.http_output = "pass" mbstring.detect_order = "auto" mbstring.substitute_character = "none" 情報は足りますでしょうか?どなたか、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • ブラウザーで日本語が文字化けする(PHP+MySQL)

    以下の現象に対処したいのですが、どうすればいいか弱っています。 (1) phpMyAdminからSQLでテーブルに日本語を挿入して、 PHPプログラムでブラウザー表示すると文字化け(?????で表示)する。 phpMyAdminでこのデータを表示すると、正しく日本語表示されている。 (PHPプログラム内で直接日本語データを記述して挿入しても同じ現象となる) (2) ブラウザーで日本語を入力してPHPプログラムで受取りMySQLに出力して、 そのデータをPHPプログラムでブラウザー表示すると問題なく日本語が表示される。 phpMyAdminでこのデータを表示すると、文字化け(ぐじゃぐじゃの文字で表示)する。 利用しているホスティングサービスは、お名前・COMのVPSプラン 実行時の環境 MySQL: サーバのバージョン: 5.0.77 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序: utf8_unicode_ci PHP : PHP5を使用 phpプログラムは、UTF-8で記述。 出力されるHTMLの文字セット <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    • ベストアンサー
    • PHP
  • phpMyAdminでの文字化け

    こんにちは。 PHPとMySQLを使用するために Apache HTTP Server 2.2.6 MySQL Server 6.0 phpMyAdmin 2.11.2.2 をインストールしました。 しかし、phpMyAdminにログインすると、おそらく日本語になっているであろう部分が全て文字化けしてしまいます。 エンコードでその都度日本語を選択すればよいかと思い、とりあえずデータベースにテーブルを作成しようと思いエンコードしたところ何も表示されなくなってしまいました。 恐らく私がしている質問は初歩的な設定が原因だと思いますが、どなたかわかる方がいらっしゃいましたら解答いただけると助かります。

    • ベストアンサー
    • MySQL
  • MySQLの文字化け

    Xampp(Ver 1.6.5)、phpMyAdmin2.11.3、PHP5.25、MySQL(ver5.0.51) まだ初めたばかりなのですが、MySQLでデータベースを作って日本語の文字入力をすると文字化けしてしまいます。コマンドプロンプトでクライアント側はSJISにセットしたのですが、サーバー側の文字セットがまだlatinになったままです。サーバー側の切り替え方を教えていただけませんか。宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Xoopsでの文字化け

    Windows XPのローカル環境に以下のバージョンでXOOPSをインストールしましたところ、全角文字がすべて「???????」になってしまう現象が起きています。 MYSQL 4.1.22 Apache 2.0.61 PHP 5.2.4 XOOPS 2.0.16a また、PHPmyadmin 2.1.11をインストールしましたが、こちらはXOOPSのように「???????」という文字化けではないのですが、異なる文字化けが発生しており、こちらはInternetExplorerのエンコードを「日本語(自動選択)」にすると正常に文字が表示されます。 C:\windows配下のmy.iniとphp.iniにてdefault_charsetはsjisと指定はしており、C:\に設置したmy.cnfでもdefault_charsetはsjisを指定しております。 これまでネットでいろいろ調べながらいろいろ試しましたが、未だに解決できません。 皆様のアドバイスをいただきたいと思いますので、よろしくお願いいたします。 あと、PHPmyadminを正しく表示させると「お使いの PHP MySQL ライブラリのバージョン 5.0.45 が MySQL サーバのバージョン 4.1.22 と異なります。これは予期しない不具合を起こす可能性があります。」と表示されますが、これも関係しているのでしょうか? あまりよく理解していないため質問内容に不備があるかもしれませんがご指摘いただきましたら都度情報を追加しますので、よろしくお願いいたします。

  • PHP4対応のphpmyadminのダウンロードについて

    レンタルサーバーにMySQLでデータベースを立ち上げようと考えているのですが、サーバーがPHP5に未対応であるため、最新のphpmyadminの設定ファイルをサーバーに入れても、phpmyadminが立ち上がらず、PHP5の環境を要求される画面が表示されてしまいます。 phpmyadminの古いバージョンをダウンロードできるサイトを探しているのですが、見当たらなくて困っています。ご存知の方がいらっしゃいましたら、教えて頂けないでしょうか? ちなみに、サーバー側の動作確認は、phpMyAdmin 2.11.2.2までとなっています。

    • ベストアンサー
    • PHP
  • PHP でMysqlを使用して日本語を登録する。

    すいません、教えて下さい。現在、PHPとMYSQLを連携させてデーターベースを構築中なのですが、日本語が登録できません。mysqlモニタにてinsert 文で登録すると日本語が登録できるのですが、phpを経由すると登録できないのです。phpから、既存のデータベースを呼び出すと日本語のところがすべて文字化けしてしまいます。ちなみにmysqlのmy.iniの設定はsjisにしてあります。ujisにするとmysqlモニタからでも日本語が登録できなくなります。どこの設定がいけないのでしょうか?ちなみにWindows Vista php5.1 mysql 5.1 です。

    • ベストアンサー
    • PHP
  • MySQLの文字化け

    WindowsServerでPHPとMySQLで作成したプログラムを動かしています。 PHPからINSERTでMySQLに登録すると環境依存文字(「(株)・(有)など)が「?」になってしまいます。 PHPからSELECTでブラウザ上に表示させると文字化けはしていませんが、phpMyAdminで確認すると「?」になっています。 このデータベースの内容を他のサーバーに移すときに、phpMyAdminからエクスポートまたはmysqldumpすると「?」のままエクスポートして、他のサーバーでインポートしても当然「?」になってしまいます。 環境依存文字が文字化けしない、あるいは他のサーバーでも環境依存文字をそのまま移行できるようにはできないでしょうか。 よろしくお願いします。 PHPはEUC-JP、データベースはujisで作成しています。 INSERTの直前でSET NAMES UJISを実行しています。

    • ベストアンサー
    • MySQL
  • MySQLで日本語を出力すると文字化け(?)します。

    初めまして、MySQLの日本語の取り扱いについて悩んでいます。 この手の質問の過去ログをいろいろ漁ってみて、試してみたのですが、 やり方が悪いのか解決には至りませんでしたので質問させていただきます。 MySQLのバージョンは5.0で、phpMyAdminは2.9です。また、PHPのバージョンは5.1です。 OSはWindwos XPです。 status等で文字コードを確認したところ、以下のようでした。 Server characterset : sjis Db characterset : sjis Client characterset : sjis Conn.characterset : sjis また、phpMyAdminの「MySQLの文字セット」にはUTF-8 Unicode (utf8) とあります(この時点で十分謎です;;)。 このような環境で、以下のようなテーブルを作成し、ブラウザに「日本語。」と出力してみたところ、????と出ました。 どなたかのご教授を得られれば幸いです。 よろしくお願いします。