BackWPupで取得したバックアップファイルを、ダウンロードしたらファイル名が文字化けしてるんだけど、何が原因?解決方法は?
WordPressを始める時に。「WP Multibyte Patch」プラグインを入れておかないとダメです!また、ファイル名に日本語は使わない方がいいですよ。
WordPressで運用している場合、バックアップで必須のプラグイン「BackWPup」ですが、とりあえずバックアップ取ってるからいいと思っていると、サーバーの引っ越しなど、いざバックアップファイルを使おうと思った場合に使えないということがあります。
文字化けしたままサーバーの引っ越しを行った場合、画像データが表示されないという状態になります。
こんな時に、ファイル名が文字化けをしないようにするプラグインがあります。後々、やっかいな問題になる前に入れておくプラグインが、「WP Multibyte Patch」です。
では、ここからなぜ、WP Multibyte Patchが必須であるか解説します。
もくじ
WP Multibyte Patchとは
そもそもWordPressは英語圏で開発されており、日本語翻訳されたものを私達は利用しています。
英語は1バイト(半角)で表すことができますが、日本語は2バイト(全角)で表す必要があり、この日本語特有の文字の問題を解決してくれるプラグインが。「WP Multibyte Patch」です。
WP Multibyte Patchの機能
WP Multibyte Patchの主な機能は以下のようなものがあります。
- 文字のカウントを文字数に
- 検索時の全角スペースを区切り文字として判定
- ファイル名サニタイズ
今回問題としている。バックアップファイルの文字化けは、3番めの「ファイル名サニタイズ」で日本語が文字化けすることを防いでくれます。
WordPress4までは標準でインストールされていた
WordPress4までは、WP Multibyte Patchが標準インストールさるほど、必須のプラグインとなっていました。
なぜ標準でインストールされなくなった?
WP Multibyte Patchは、WordPress5から、標準プラグインから外れました。WordPressをリリース時に、日本語と英語の調整をなくすことで、早くリリースができるようになるためだとされています。
必要ではないから、標準プラグインから外れたわけではなく、WordPressのリリースを早める目的のためであり、決して不要になったわけではありません。
WP Multibyte Patchインストール後の日本語ファイル名がどうなるか
実際に、「WP Multibyte Patch」をインストールするとどのような動作になるかを、バックアップファイルで確認してみます。
バックアップファイルを確認
「WP Multibyte Patch」をインストールする前に取得されたバックアップファイルは、日本語ファイル名の場合は文字化けします。
バックアップのダウンロード方法は、
- ダッシュボード - BackWPup - バックアップ
ここで過去に取得されたバックアップログが表示されているため、ここからダウンロードを行います。
ダウンロードしたファイルを確認すると、日本語でアップロードしたファイル名が文字化けしている状態です。
これは当然の動作で、「WP Multibyte Patch」はファイルをアップロードする時(DBに格納する時)にファイル名のサニタイズを行ってくれるため、既に日本語名で登録されている、ファイルをダウンロードしても、文字化けは直りません。
なので、WordPressを始める時にWP Multibyte Patchプラグインはインストールしておくのが正解です。
日本語ファイルをアップロードすると
WP Multibyte Patchプラグインのインストール後に、文字化けしていたファイルを再度、日本語でアップロードしてみます。
ファイル名が内部的に変換されて、文字化けしない文字列に変更されていることが確認できました。
結論
WP Multibyte Patchプラグインの動作を検証すると、WordPressの運用はこのようにしておくべきということが分かりました。
2.画像等のファイル名は英語として、日本語は使わない
このような対策を行っておかないと、ブログを移設する場合にこまったことになります。FTPソフトを使って、バイナリ転送を行えば回避できる場合もありますが、上級者向けの手順となるので、プログラムに詳しくない方は、この2つのルールを守っておけば間違いありません。
ファイ名の文字化けを防ぐためには
1.WP Multibyte Patchプラグインのインストールは最初に行う
2.ファイル名に日本語は使わない
ということですね。