UPDATE: perhaps this is stating the obvious, but you must use either ISO-8859-1 or UTF-8 consistently everywhere, in both the system-wide settings (/etc/default/locale
) and (if required) in the application's Java settings.
You need to change the system-wide locale to use ISO-8859-1 - however it would be much cleaner, if the application supports UTF-8, to simply have it use that (via -Dfile.encoding=utf8
on the JVM), as Ubuntu now works by default in UTF-8.
Check your application's documentation to see how to set the locale and encoding (e.g. ISO-8859-1) - if this isn't covered, setting the JAVA_TOOL_OPTIONS environment variable may be useful- this could be in the application's startup script.
To set Ubuntu to use ISO-8859-1:
- Generate the required Linux locale in case it doesn't exist already, and update /etc/default/locale via update-locale:
sudo locale-gen fr_FR
sudo update-locale LANG=fr_FR.ISO-8859-1
- UPDATE: Make similar edit to /etc/environment
- not sure why Ubuntu requires this but it's on my 8.04 system which was clean install not upgrade
- Close all applications and shell sessions, and restart them.
Unlike Windows and Mac, file systems on Linux have no concept of character encoding, so the application can generate files with ISO-8859-1 or UTF-8 pathnames at will, and even mix them in the same directory. That's why you can create a directory as "Août" and have it display wrongly in another shell.
Using env | egrep "^(LC|LANG)"
can be useful to check the locale variable settings - it sounds like those for your local shell (xterm, GNOME Terminal, etc) are wrong. Once you have the right settings, put them into your ~/.bashrc
file for the shell.
If you have folders created that have the wrong encodings in the pathnames, have a look at convmv - it's in the Ubuntu repositories.
Some general info on setting up locales and character encodings in this Gentoo UTF-8 HOWTO - although this is not for Ubuntu so some commands differ, the locale
command is the same and the ideas are explained quite well.