-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Low
-
None
-
Affects Version/s: 9.2.26, 10.2.19
-
Component/s: Server - Administration
-
None
-
1
-
Severity 3 - Minor
Issue Summary
Confluence Data Center maintenance banner fails to persist German umlauts correctly, converting them into HTML entities ( e.g., ü ) and progressively double-encoding them ( e.g., ü ) upon deactivation and reactivation of the banner.
Steps to Reproduce
- Initial Setup:
- Install Confluence 9.2.x or 10.2.x
- Log in to Confluence Data Center as a System Administrator.
- Navigate to Administration (cog icon) > General Configuration > Maintenance.
- Enter a message containing German umlauts in the Maintenance Message field.
- Example: "Wartungsarbeiten werden durchgeführt. Währenddessen kann es zu Ausfallzeiten kommen."
- Click Save and ensure the banner is Activated.
- Observed Result: The banner renders correctly on the UI with proper umlauts (ü, ä).
- Deactivation:
- Go back to the Maintenance configuration page.
- Deactivate the banner (uncheck the display option) and click Save.
- Reactivation (Trigger):
- On the same configuration page, re-enable the banner.
- Observation: Before clicking save, notice the text in the input field has already transformed from ü to ü.
- Click Save.
- Observed Result: The banner on the site now displays the literal string durchgeführt instead of the rendered character.
- Compounding Effect:
- Repeat the Deactivation and Reactivation cycle (Steps 2 and 3).
- Observed Result: The entities are encoded again. ü becomes ü.
- Each subsequent save adds another layer of &, rendering the banner unreadable.
Additional details
- Form view hydration in the admin UI layer (Velocity template/Soy or REST controller).
- When repopulating the <input> / <textarea> field, the code passes the stored string through a full HTML-entity encoder (like escapeHtml4() or TextUtils.htmlEncode()) instead of a basic attribute encoder.
- Why it breaks:
- It maps non-ASCII Unicode (ü) to named entities (ü) directly inside the form field's value.
- The browser treats ü as literal input text, posting ü back on save.
- The subsequent read escapes the &, yielding ü (compounding on each save).
Expected Results
The maintenance banner should consistently render German umlauts (ä, ö, ü, ß) as characters, even after the banner has been deactivated and reactivated.
Actual Results
Upon reactivation, German umlauts are converted into HTML entities ( e.g., ü ), and each subsequent save operation results in double-encoding ( e.g., ü ), causing the banner to display plain-text HTML code to users.
Workaround
Manually delete the corrupted text and re-enter the plain-text message containing the correct umlauts each time you reactivate the maintenance banner.