В OS X Lion LANG не установлен в UTF-8, как это исправить?


148

Я пытаюсь настроить postgress в OS X Lion и обнаруживаю, что неправильно настроена среда LOCALE var.

Вот что установлено:

LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Я ожидаю что-то с UTF-8. Это чистая установка OS X Lion с испанским языком. Я ничего не двигаю.

Я не знаю, как настроить его на UTF-8.

В настройках терминала стоит проверить UTF-8 и установить LOCALE в открытое положение, хотя это не работает.


2
Странно. Он должен работать в Терминале по умолчанию, при условии, что вы используете оболочку по умолчанию (bash) и профиль настроек терминала по умолчанию (Basic). Обратите внимание, что если вы измените кодировку или измените «установить переменные среды локали», они вступят в силу только в новых терминалах, а не в тех, которые уже открыты.
Крис Пейдж

Я использую zsh (используя oh мой установщик zsh!), Может это так?
mamcx

Возможно. Попробуйте запустить zsh без какой-либо пользовательской конфигурации, чтобы увидеть, исчезнет ли проблема. Используйте Shell> New Command, чтобы запустить zsh --no-rcsи zsh --no-rcs --no-global-rcsсузить проблему. Кроме того, попробуйте просто запустить localeкоманду без оболочки через New Command и посмотрите, что она сообщает.
Крис Пейдж

@ChrisPage У меня был тот же вывод, что и у OP, с этими настройками в терминале. Мне пришлось set locale environment variablesвыключить, перезапустить терминал, а затем снова включить его, чтобы получить правильную среду для отображения.
Крис

Существует тщательный ответ на этот вопрос на проси разные .
звездный день

Ответы:


311

Я заметил ту же проблему при входе на серверы Red Hat с компьютера OSX Lion.

Попробуйте добавить или отредактировать ~/.profileфайл, чтобы он правильно экспортировал настройки локали после начала нового сеанса.

export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8

Этих двух строк, добавляемых в файл, должно быть достаточно для установки языкового стандарта [замените en_USжелаемый языковой стандарт и заранее проверьте, действительно ли он установлен в вашей системе ( locale -a)].

После этого вы можете начать новый сеанс и проверить с помощью locale:

$ locale

Следующее должно быть выводом:

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

2
Также я изначально заметил проблему при использовании iTerm2. Этот обходной путь работает как для iTerm2, так и для терминала.
wormintrude

1
Потратил час на поиски решения по этому вопросу, большое спасибо за публикацию этого человека. Я могу подтвердить, что он работает как на терминале, так и на iTerm2.
Мариано Кавалло

7
ссылка недействительна
Винсент Сит

11
У меня есть в .bash_profileмоей домашней папке и .profileне было источника, когда .bash_profileприсутствовал. Мне нужно было вручную источник .profileвнутри.bash_profile
BrunoJCM

3
Удивительно, что сделал это, просто обратите внимание, когда вы используете ЗШ, не глуп , как мне ... конфиг там ~/.zshrc... ну теперь работает как шарм
Рэдрика

20

У меня недавно была та же проблема в OS X Sierra с оболочкой bash, и благодаря ответам выше мне нужно было только отредактировать файл

~/.bash_profile 

и добавить эти строки

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

1
Это действительно помогает. У меня нет, bash_profileи я должен создать его вручную. И без установки exportна bash_profileкаждый раз, когда мы сбрасываем терминал, язык будет откатываться.
Фан Ван Лин

7

Это хедрейкер давно. Теперь я вижу, что это OSX .. Я изменяю его для всей системы, и он отлично работает

Когда я добавляю это, LANG в Centos6 и Fedora также является моим предпочтительным LANG. Вы также можете «снять галочку» с экспорта или установить локаль в настройках терминала (OSX) / etc / profile

экспорт LC_ALL = en_US.UTF-8
экспорт LANG = en_US.UTF-8


5

если у вас установлен zsh, вы также можете обновить ~/.zprofileс помощью

if [[ -z "$LC_ALL" ]]; then
  export LC_ALL='en_US.UTF-8'
fi

и проверьте вывод, используя localecmd, как показано выше

❯ locale                                                                                                                                           
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

0

У меня была эта проблема с MacOS High Sierria.

Снимок экрана 1

Вы можете установить язык и язык в формате UTF-8, используя следующую команду:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Снимок экрана 2

Теперь, чтобы проверить, обновлена ​​ли среда локали, используйте следующую команду:

Locale

Скриншот 3


1
Чем этот ответ отличается от принятого?
Денис V

2
Какова цель первого фото? Разве это не так же, как последний?
narengi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.