# Terminal should set LC_CTYPE rather than LANG

By default Terminal sets LANG at startup (Preferences → Advanced).

The intent here I assume is to get the various shell commands to work with UTF-8, which is great, since file names (and thus `ls` output) are UTF-8 and so is keyboard input.

Terminal should however only set LC_CTYPE, there are two reasons why setting LANG is problematic:

 1. In some contexts¹ Terminal is unable to obtain a value for language/region and sets LANG to just UTF-8. This does not carry over to LC_CTYPE, which means UTF-8 support does *not* work. To reproduce this go to System Preferences → International → Format and set Region to South Africa. Now open a new Terminal and type “locale”. The values I get are:

      LANG="UTF-8"
      LC_COLLATE="C"
      LC_CTYPE="C"
      LC_MESSAGES="C"
      LC_MONETARY="C"
      LC_NUMERIC="C"
      LC_TIME="C"
      LC_ALL=

    An additional test is:
    
      % touch /tmp/æblegrød && ls /tmp/æblegrød
      /tmp/??blegr??d

 2. The language that Terminal obtains (when it works) does not actually match my language preference. I.e. I have English at the top of Languages, but since I customized the Danish formats for dates, Terminal exported LANG as da_DK even though I prefer English output.


¹ Both me and someone I spoke to did a clean install of Leopard and had the default values for Region set to “Custom” which made UTF-8 not work in the Terminal by default.