Blog / 18 運用・保守

サイトの引っ越しで画像が消える理由 ── 日本語のファイル名と「濁点」

見た目はまったく同じファイル名なのに、サーバーを移したら画像が表示されない。サイトの引っ越しやリニューアルで起きやすいこの不具合は、濁点の「書き方」の違いが原因のことがあります。

運用・保守

先に結論を言います。日本語のファイル名は、同じ「ベ」でも1文字で書く形(NFC)と、「ヘ」と濁点を組み合わせる形(NFD)の2通りがあり、サーバーを移すと食い違って画像が見つからなくなることがあります。予防はファイル名を英数字にすること。起きてしまったら、名前を英数字に付け替え、記事の中の URL を置き換えます。

同じ「ベ」でも、コンピューターには2通りある

「ベ」という文字は、コンピューターの中で2通りに書けます。

  • 「ベ」という1文字として書く(NFC と呼ばれる形)
  • 「ヘ」と、濁点だけの文字「゛」の2文字を組み合わせて書く(NFD と呼ばれる形)

画面ではどちらも同じ「ベ」に見えます。ところが中身は別の文字の並びなので、コンピューターにとっては別の名前です。URL にしてみると違いがはっきりします。

ベ(1文字)       %E3%83%99
ヘ+゛(2文字)   %E3%83%98%E3%82%99

濁点(゛)と半濁点(゜)の付く文字、つまり「が」「ぱ」「ベ」「プ」のような文字が、すべてこの2通りを持っています。この2つの形は、Unicode の「正規化」という決まり(Unicode 標準の付録15)で定められています。

なぜ起きるのか

Mac で作ったファイルの名前は、NFD になっていることがあります。一方、多くの Web サーバー(Linux)は、ファイル名を文字の並びのまま厳密に区別します。

そのため、記事に記録されている画像の URL と、サーバーに置かれたファイルの名前とで、濁点の書き方が食い違うことがあります。片方が NFD、もう片方が NFC なら、見た目は同じ名前でも、サーバーは「そんなファイルはない」と返します。

よく起きる場面

ふだんの更新では気づかず、サイトを移したときに表に出るのが、この不具合の特徴です。

  • Mac で名前を付けた画像を、FTP で直接サーバーに上げていた
  • WordPress の書き出し(エクスポート)と取り込みで記事を移したら、データに記録された画像の URL だけが NFD のままだった
  • 手元の Mac の作業環境では表示されるのに、本番のサーバーに移すと表示されない

やっかいなのは、すべての画像で起きるわけではないことです。濁点や半濁点を含む名前の、一部の画像だけが表示されない。そのため、「ファイルはちゃんとあるのに、この1枚だけ出ない」という形で見つかります。

ページの URL(スラッグ)に日本語を使っている場合も、同じことが起きます。見た目は同じ URL でも中身の文字が違うため、リンクや転送の設定が合わないことがあります。

見分け方

見た目では区別できないので、文字のコードで見分けます。いちばん手軽なのは、表示されない画像の URL をコピーして、テキストに貼りつけてみることです。私もまずこれをします。

  • %E3%82%99(濁点だけの文字)、%E3%82%9A(半濁点だけの文字)が含まれていれば NFD
  • 含まれていなければ NFC

サーバーに入れる方なら、濁点・半濁点だけの文字を含む名前を、次のように探せます。

find wp-content/uploads -name "*$(printf '\xe3\x82\x99')*" -o -name "*$(printf '\xe3\x82\x9a')*"

WordPress 側の対策

WordPress は 6.1 から、管理画面でアップロードしたファイルの名前を、NFC にそろえるようになっています。1Note 1サーバーの PHP で intl という拡張機能が使える場合です。多くのレンタルサーバーでは使えます。

ただし、それより前にアップロードしたファイルや、FTP で直接置いたファイルは、NFD のまま残っていることがあります。サイトの引っ越しやリニューアルのときに問題になるのは、たいていこの古いファイルです。

起きてしまったときの直し方

  1. ファイル名を英数字に付け替える見つかったファイルを、英数字の名前に付け替えます。縮小版のファイルも一緒に付け替えます。
  2. 記事の中の URL を置き換えるデータベースの中にある古い URL を、新しい名前に置き換えます。WP-CLI が使えるなら search-replace というコマンドで、まとめて置き換えられます(必ず先にバックアップを取ってください)。
  3. 表示を確かめるその画像を使っているページを開き、表示されることを確かめます。

ページの URL に NFD が混ざっている場合は、無理に直さなくてかまいません。直すなら、古い URL から新しい URL への転送を必ず設定してください。

予防:ファイル名は英数字にする

いちばん確実なのは、最初からファイル名を英数字にすることです。「パンフレット.jpg」なら「pamphlet.jpg」のようにします。サイトを引っ越すときにも、私は日本語の名前のファイルを英数字に付け替えてから移しています。

英数字の名前は、濁点の問題だけでなく、URL が長く読みにくくなる問題や、メールで URL を送ったときに途中で切れる問題も避けられます。写真をアップロードする前に名前を付け替えるのは少し手間ですが、あとから困らないための、いちばん安い対策です。

よくある質問

Windows で付けたファイル名でも起きますか?
Windows で付けた名前は、ふつう1文字の形(NFC)なので、起きにくいです。Mac を経由したファイル(Mac で受け取って保存し直したものなど)は注意してください。
記事の URL(スラッグ)も英数字にした方がいいですか?
新しく作る記事は、私は英数字を勧めます。すでに日本語の URL で公開している記事は、変えると転送が必要になるので、無理に直さなくてかまいません。

サイトの引っ越しや、画像が表示されないといったご相談は、運用・保守でお受けしています。

Written by ウチダヨシユキ。 2026.10.21

Next on the desk