У OS X Lion LANG не встановлено на UTF-8, як це виправити?


148

Я намагаюся налаштувати постгрес в OS X Lion, і виявляю, що це неправильно налаштування var середовища середовища LOCALE.

Ось що встановлено:

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 (використовуючи о, мою програму zsh!), Можливо, це?
mamcx

Можливо. Спробуйте запустити zsh без будь-якої спеціальної конфігурації, щоб побачити, чи проблема не усувається. Використовуйте Shell> New Command для запуску zsh --no-rcsта zsh --no-rcs --no-global-rcsзвуження проблеми. Крім того, спробуйте просто запустити localeкоманду без оболонки через « Нова команда» і подивіться, що вона звітує.
Кріс Пейдж

@ChrisPage У мене був такий самий вихід, що і в OP, з цими налаштуваннями в терміналі. Мені довелося set locale environment variablesвимкнути, перезапустити термінал, а потім увімкнути його, щоб отримати потрібне середовище.
Кріс

На це питання ґрунтується ґрунтовна відповідь на запитання " Різні" .
starfry

Відповіді:


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.
Mariano Cavallo

7
посилання недійсне.
Вінсент Сит

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

3
Дивовижно, що це зробили, лише зауважте, щойно ви використовуєте zsh, не будьте тупі, як я ... конфігурація є ~/.zshrc... ну зараз працює як шарм
Редрік

20

Нещодавно у мене була та сама проблема в OS X Sierra з bash shell, і завдяки відповідям вище, мені довелося лише редагувати файл

~/.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) / тощо / профіль

експортувати LC_ALL = en_US.UTF-8
експортувати LANG = en_US.UTF-8


5

якщо у вас є ЗШ установки ви можете також оновити ~/.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.