how to fix locale error

74,993

Solution 1

The debootstrap doesn't create a locale. So we use something else as a locale. Use this command:

sudo locale-gen en_US.ISO-8859-1

I hope this helps!

Solution 2

An Ubuntu desktop should be set up with UTF-8 encoding. For some reason your system tries to set the latin1 locale en_US.ISO-8859-1. You should really change that.

Maybe the setting takes place in /etc/default/locale.

Whereever it happens, change it to

LANG=en_US.UTF-8

or else you will encounter various locale related surprises.

Solution 3

A permanent solution for locale issue is to export the locale variables in your ~/.bash_profile. You can also use /etc/profile file instead of .bash_profile to have the change take effect for all users on the system.

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
" >> ~/.bash_profile

Don't forget to start a new shell or to manually source ~/.bash_profile.

Solution 4

This works for me.

  1. export LANGUAGE=en_US.UTF-8
  2. export LANG=en_US.UTF-8
  3. export LC_ALL=en_US.UTF-8
  4. sudo locale-gen en_US.UTF-8
  5. sudo dpkg-reconfigure locales

Solution 5

Add LC_ALL="en_US.UTF-8" to /etc/environment and then restart the instance/machine

For more info visit this blog

http://www.pixelninja.me/how-to-fix-invalid-locale-setting-in-ubuntu-14-04-in-the-cloud/

Share:
74,993

Related videos on Youtube

user1527227
Author by

user1527227

Updated on September 18, 2022

Comments

  • user1527227
    user1527227 over 1 year

    I just did a fresh install of ubuntu using debootstrap. When I do sudo aptitude upgrade, I get this error message:

    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
        LANGUAGE = "en_US:en",
        LC_ALL = (unset),
        LANG = "en_US.ISO-8859-1"
    are supported and installed on your system.
    perl: warning: Falling back to the standard locale ("C").
    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_MESSAGES to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    

    Can someone please tell me how to resolve this issue? I see a lot of postings similar to this online but none of them seems to resolve the problem.

    I am using Ubuntu 14.04 LTS. Thanks.


    FYI:

    $ locale -a
    C
    C.UTF-8
    en_AG
    en_AG.utf8
    en_AU.utf8
    en_BW.utf8
    en_CA.utf8
    en_DK.utf8
    en_GB.utf8
    en_HK.utf8
    en_IE.utf8
    en_IN
    en_IN.utf8
    en_NG
    en_NG.utf8
    en_NZ.utf8
    en_PH.utf8
    en_SG.utf8
    en_US.iso88591
    en_US.utf8
    en_ZA.utf8
    en_ZM
    en_ZM.utf8
    en_ZW.utf8
    POSIX
    

    and

    $ locale
    LANG=en_US.ISO-8859-1
    LANGUAGE=en_US:en
    LC_CTYPE="en_US.ISO-8859-1"
    LC_NUMERIC="en_US.ISO-8859-1"
    LC_TIME="en_US.ISO-8859-1"
    LC_COLLATE="en_US.ISO-8859-1"
    LC_MONETARY="en_US.ISO-8859-1"
    LC_MESSAGES="en_US.ISO-8859-1"
    LC_PAPER="en_US.ISO-8859-1"
    LC_NAME="en_US.ISO-8859-1"
    LC_ADDRESS="en_US.ISO-8859-1"
    LC_TELEPHONE="en_US.ISO-8859-1"
    LC_MEASUREMENT="en_US.ISO-8859-1"
    LC_IDENTIFICATION="en_US.ISO-8859-1"
    LC_ALL=
    
  • Danatela
    Danatela almost 10 years
    Nope, aptitude is valid too. Your answer will not give any changes to the OP.
  • Gunnar Hjalmarsson
    Gunnar Hjalmarsson almost 10 years
    While that may solve the locale error, it gives you a system with latin1 encoding, which is not suitable on Ubuntu.
  • user1527227
    user1527227 almost 10 years
    Are you sure that's the one to use? How do you know?
  • Gunnar Hjalmarsson
    Gunnar Hjalmarsson almost 10 years
    @user1527227: Well, almost. ;) Because AFAIK en_US.UTF-8 comes pre-generated on every Ubuntu desktop. But you can easily check it by running the locale -a command. It would be good if you edited the question and added the output of that command.
  • user1527227
    user1527227 almost 10 years
    i added the info you requested.
  • Gunnar Hjalmarsson
    Gunnar Hjalmarsson almost 10 years
    @user1527227: Ok, and there we can see en_US.utf8 in the locale -a output. My advice to change from en_US.ISO-8859-1 to en_US.UTF-8 stands.
  • user1527227
    user1527227 almost 10 years
    Thank you. Do you know how to exactly do that? I do not see /etc/default/locale. Can I just run sudo locale-gen en_US.utf8?
  • Gunnar Hjalmarsson
    Gunnar Hjalmarsson almost 10 years
    @user1527227: No, no, the locale is already generated. Now the configuration should be changed to make use of it. Probably the best way is to go to System Settings -> Language Support, change the selected language item, change it back to English (United States), and then click the "Apply System-Wide" button.
  • user1527227
    user1527227 almost 10 years
    I'm using ubuntu 14.04 LTE amd64. I don't see Language Support in System Settings.
  • user1527227
    user1527227 almost 10 years
    Oh I have ubuntu but i'm using KDE :). Do you know how to change it from there?
  • Gunnar Hjalmarsson
    Gunnar Hjalmarsson almost 10 years
    @user1527227: Well, no. This is a page where the most common config files for setting environment variables are mentioned: help.ubuntu.com/community/EnvironmentVariables
  • user1527227
    user1527227 almost 10 years
    Also, in ~/.kde.env/setlocale.sh, you set export LANG=en_US.UTF-8
  • Daniel Alder
    Daniel Alder over 9 years
    I just found the command update-locale LANG=en_US.UTF-8. Probably this is the way which works also on future releases since keyboard/locale config is changing all the time in new Ubuntu releases. The command also checks if the values are valid...
  • Gunnar Hjalmarsson
    Gunnar Hjalmarsson over 9 years
    @DanielAlder: Right, that's a command line tool to edit /etc/default/locale, which I should have thought of. Thanks!
  • Timo
    Timo almost 3 years
    is your working permanent to fix the locale issue?
  • NotTheDr01ds
    NotTheDr01ds about 2 years
    Just a heads-up -- I wouldn't normally approve an edit that removed a link to your blog, but you did not disclose that you were linking to your personal content in your post. You can add the link back in if you'd like, but please make sure to review Expected Behavior, specifically, "if you mention your product, website, etc. in your question or answer, you must disclose your affiliation in your post." Thanks!
  • NotTheDr01ds
    NotTheDr01ds about 2 years
    Also note that, while I didn't test it, I'm fairly confident that your blog post has an error. You can't source from within an executed script (e.g. ./set_locale.sh as your blog states). The new values will not take effect in the current shell if you do. You would need to source the script itself (e.g. source set_locale.sh)