Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I just installed CentOS 6 and whenever I login to the system via SSH remotely, I get the following error:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

When I type "locale" on the command line, I get the following output:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

What can be the problem? How can I solve this issue?

share|improve this question
    
your solution of commenting out the SendEnv LANG LC_* arg worked for me on Mac OS X 10.7.5 –  user150225 Dec 19 '12 at 7:49
add comment

6 Answers

up vote 3 down vote accepted

On the server you ssh from do you have a locale set via an environment variable? In looking at my Centos 6 installation, the only locale that I can find supported is identified as "en_US.utf8" (discovered using locale -a command). Could this be the problem?

In my testing, when I set the LC_ALL environment variable to "en_US.UTF-8", ssh'd to the server, the output of my locale command was set to "POSIX" in my case. This the same as when I have NOT set (i.e. unset) the LC_ALL variable before ssh'ing.

When I set my LC_ALL variable to "en_US.utf8" or "en_US.utf-8", ssh'd to my Centos 6 box, the output of the locale was the same as what was set on the source box.

Notice I used no caps for UTF also.

share|improve this answer
4  
By the way, I noticed that this was occurring from my Mac OS X Lion ssh settings. I edited /etc/ssh_config file and commented SendEnv LANG LC_*. It solved my problem. –  Cem Oct 28 '11 at 12:30
    
@Cem Thanks for the tip, this indeed fixes it on Mac OS X Lion. –  Zsolt Török Apr 15 '13 at 7:37
add comment

and make sure LC_ALL="en_US.UTF-8" is in or added to the /etc/sysconifg/i18n

example content

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 
share|improve this answer
add comment

Simple way:

Add

 LC_CTYPE="en_US.UTF-8"

to /etc/sysconfig/i18n.

share|improve this answer
    
It works for me, after so many tries. –  tommyogp May 27 at 9:38
add comment

Solved this by disabling "Set locale environment variables on startup" in Terminal Settings > Advanced as per this screenshot.

enter image description here

NOTE: If you use iTerm2 you can disable the "Set locale variables automatically" option in Preferences > Profiles > Terminal

share|improve this answer
    
This worked for me. Specifically, Terminal.app was setting "LC_CTYPE=UTF-8" which then caused the errors reported by the OP. Alternatively, unset LC_CTYPE or export LC_CTYPE=en_US.UTF-8 fixup the problem after login. –  tardate May 2 '13 at 9:53
add comment

On a local Centos 6.2 system: This did not help:

localedef -i en_US -f UTF-8 en_US.UTF-8

This worked:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

I also deleted locale-archive in /usr/lib/locale. I do not know if this was necessary.

share|improve this answer
add comment

This was my fix in the past for locale errors.

Run the following: locale-gen

Then edit /etc/locale.gen. Make sure the following is uncommented:

en_US.UTF-8 UTF-8
en_US ISO-8859-1

generate locale.

locale-gen

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.