This blog post explains how to set up PuTTY to connect to a Linux server in UTF-8 mode, so that all Unicode characters (including symbols and accented characters) will be transferred and interpreted correctly.
Follow these steps:
- Download and install the newest PuTTY (0.62 or later).
- Before connecting, configure PuTTY like this:
- Window → Translation → Remote character set: UTF-8
- Connection → Data → Environment variables: add Variable: LC_CTYPE, Value: en_US.UTF-8 , and click on Add.
- Save these settings in Session (e.g. in Session → Default Settings → Save).
- Connect to the SSH server with Putty.
- If everything (including typing, reading and copy-pasting non-ASCII Unicode characters) already works, stop here.
- Run the following commands without the leading
$(you will need the root password). These commands set up the UTF-8 en_US locale on the server. The commands have been verified and found working on Debian and Ubuntu servers.
$ if test -f /etc/locale.gen; then sudo perl -pi -e 's@^# *(en_US.UTF-8 UTF-8)$@$1@' /etc/locale.gen; grep -qxF 'en_US.UTF-8 UTF-8' /etc/locale.gen || (echo; echo 'en_US.UTF-8 UTF-8') >>/etc/locale.gen; fi $ if test -f /var/lib/locales/supported.d; then grep -qxF 'en_US.UTF-8 UTF-8' || (echo; echo 'en_US.UTF-8 UTF-8') >>/var/lib/locales/supported.d/en; fi $ sudo perl -pi -e 's@^(?=LC_CTYPE=|LC_ALL=)@#@' /etc/environment $ sudo /usr/sbin/locale-gen $ sudo /usr/sbin/update-locale LC_CTYPE LC_ALL
- Close the SSH connection window and open a new connection.
- Verify that everything (including typing, reading and copy-pasting non-ASCII Unicode characters) works.
Contrary to the information found elsewhere on the net, just setting Window → Translation → Received data assumed to be in which character set or Window → Translation → Remote character set to UTF-8 is not always enough. Setting the server-side environment variables (e.g. setting LC_CTYPE to en_US.UTF-8 above) properly is also required (unless they are already correct). Generating the UTF-8 locale definitions (using locale-gen) on the server is also required (unless they are already generated).