web-dev-qa-db-ja.com

データベースの復元の誤り、エンコードの問題

W3 Total Cacheで設定をめちゃくちゃにしました(すべてのメディアを自分のライブラリにインポートしようとしましたが、うまくいきませんでした。すべての写真へのリンクをすべて解除しました)。だから私はデータベースの最新のバックアップをとり、私のphpmyadminの中に_postと_postmetaテーブルをコピーして貼り付けます。リンクと画像が期待どおりに戻ってきましたが、現在ではすべてのフランス語の文字(à、é、èなど)が正しく表示されていません。

私はプラグインWP-DBManagerからバックアップを取りました。これはUTF-8を正しく扱えないようです。問題を解決するための最速の方法は何ですか?

ありがとう

詳細については編集済み:SQLバックアップヘッダーは

DROP TABLE IF EXISTS `hojd_posts`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;

しかし、私はそれらの文字が私のsqlコマンドに直接入ってくるようにひどくエンコードされています(例: "français"のための "français")...

2
Jonathan

エンコーディングをサポートしているテキストエディタがあれば、これを解決できるかもしれません。そうすれば、正しい組み合わせになるまで、Latin 1とUTF-8のエンコーディングを切り替えることができます。私は SubEthaEdit を使用します。これはあなたがエンコーディングを変更したときにファイルを変換するだけでなく再解釈することもできます。

バイトとして表示する場合、çはUTF-8でc3 a7としてエンコードする必要があります。ここで起こり得ることは、ファイルが最初にLatin 1として解釈され、c3 a7çを意味し、次にUTF-8として保存され、çc3 83 c2 a7として保存されることです。あなたはc3 a7バージョンが欲しいです。

Nice çに戻るには、ファイルをUTF-8として開き、Latin-1として保存してから、UTF-8の場合と同様にもう一度開きます。

これを実行したら、ファイルをMySQLにインポートできますが、それをUTF-8に指定します。そうしないと、MySQLはLatin 1として解釈しようとする可能性があり、ç文字が残ります。

0
Jan Fabry

私はドイツのウムラウトに関して同様の問題を抱えていました。この問題は、phpmyadminを使用したdbエクスポートでも発生しました。私の解決策は、コマンドラインツールmysqlとパラメータ "--default-character-set =" utf8 "を使ってデータベースをエクスポートすることでした。

Linuxシェルにアクセスしていない場合のもう1つの方法: MySQLDumperをインストールして使用する

0
rofflox

古いWordPressデータベース、さらに新しいデータベースでよくある問題は、データベーステーブルはlatin-1に設定されていますが、コンテンツは実際にはUTF-8としてエンコードされているということです。 UTF-8としてエクスポートしようとすると、MySQLは(おそらく)Latin-1データをUTF-8に変換しようとします。データはすでにUTF-8であるため、二重エンコード文字になります。

解決策は、表をlatin-1としてエクスポートすることです。 MySQLは既にラテン語-1であるとMySQLが考えているため、ストレートエクスポートを行います。

  1. 文字セットを「latin1」から「utf8」に変更します。

ダンプされたデータはエクスポート処理中に変換されなかったため、実際にはUTF-8でエンコードされたデータです。

  1. 新しいテーブルをUTF-8として作成します。CREATE TABLEコマンドがSQLダンプファイルにある場合は、文字セットを 'latin1'から 'utf8'に変更します。

  2. 通常どおりにデータをインポートしてください。ダンプファイルにUTF-8でエンコードされたデータがあるので、ダンプファイルで宣言された文字セットはUTF-8になり、インポート先のテーブルはUTF-8になり、すべてが順調に進みます。

0
Chris_O