Featured images with URL-encoded Korean filenames fail to display when using `{{img_url feature_image size="xxx"}}` helper


Issue Summary

  • Explain roughly what’s wrong
  • What did you expect to happen?

Steps to Reproduce

  1. This is the first step…
  2. This is the second step, etc.

Setup information

Ghost Version
6.4.0

Node.js Version
v24.10.0

How did you install Ghost?
Docker in my M2 MacBook

Provide details of your host & operating system
MacOS 26.0.1(25A362)

Database type
SQLite 3

Browser & OS version
safari, chrome

Relevant log / error output

Problem Description:

After migrating from WordPress to Ghost, featured images with Korean characters in their filenames were not displaying on a Ghost blog (running in a Docker container environment). Images embedded directly in the post body (HTML content) were displaying correctly.

### Symptoms:

* Featured images with Korean filenames were not visible on the homepage or individual post pages.

* Direct access to the raw image URL (e.g., `https://ilikeafrica.com/content/images/wordpress/2025/08/스크린샷-2025-08-03-오후-6.42.01.png\`) worked correctly in the browser.

* The Ghost Admin API showed the `feature_image` URL correctly stored with HTTPS and URL-encoded Korean characters, and without the `/size/wXXX/` part.

### Root Cause (Identified):

The issue was traced to Ghost’s internal image resizing/processing functionality. When the Ghost theme used the `{{img_url feature_image size=“xxx”}}` helper to generate a resized version of the featured image, this process failed for images with URL-encoded Korean characters in their filenames. This caused the image to not be displayed. Images in the post body, which are typically served directly by Ghost without resizing, were unaffected.

### Resolution (Workaround):

To resolve the issue, the Ghost theme files (`partials/post-image.hbs` and `partials/loop.hbs` in the `ruby` theme) were modified to bypass Ghost’s image resizing helper for featured images.

Specifically, all instances of `{{img_url feature_image size=“xxx”}}` were replaced with `{{feature_image}}`. This forces Ghost to use the raw, original `feature_image` URL directly from the database, thus avoiding the problematic resizing process.

### Steps to Reproduce (Hypothetical):

1. Set up a Ghost blog (e.g., in Docker).

2. Upload an image with a Korean filename (e.g., `스크린샷.png`).

3. Set this image as the featured image for a post.

4. Ensure the theme uses `{{img_url feature_image size=“xxx”}}` helper to render featured images.

5. Observe that the featured image does not display.

I would suggest to rename the file as a workaround instead of disabling image resize feature at all. img_url provides better images that theme needs for responsive UI.

But of course fixing the root cause would be the best.