CAPTCHA image does not display when Confluence is hosted on a non-English system
Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.
Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles for non-Data Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Symptoms
When a CAPTCHA should be displayed after repeated failed login attempts, instead a broken image link is displayed.
The following appears in the atlassian-confluence.log
:
2012-10-05 15:01:27,053 ERROR [http-8090-1] [[Standalone].[localhost].[/].[jcaptcha]] log Servlet.service() for servlet jcaptcha threw exception
com.octo.captcha.CaptchaException: word is too tall: try to use less letters, smaller font or bigger background: text bounds = {text=tasble
...
Cause 1:
The system default encoding is set to something other than UTF-8, which has caused the font used when generating the CAPTCHA image to be something other than what is normally used. This font generates CAPTCHA strings that are too large to fit in the image size, causing an exception. This is common for Chinese/Korean servers.
Resolution 1:
Add the following system property to Confluence, using the instructions at Configuring System Properties:
-Dfile.encoding=UTF-8
Restart Confluence
Resolution 2:
If the issue is not resolved after following Resolution 1, then it is worth checking the language set for Confluence. This is common for Chinese/Korean servers.
- This can be checked by checking JVM flag values. For example, if you face this issue and if the JVM flags are set to -Duser.language=ko -Duser.country=KR , change it to -Duser.language=en -Duser.country=US
- Restart Confluence and check if the issue is resolved.