Di OS X Lion, LANG tidak diatur ke UTF-8, bagaimana cara memperbaikinya?

148

Saya mencoba untuk mengatur postgress di OS X Lion, dan menemukan bahwa pengaturan lingkungan LOCALE var tidak benar.

Inilah yang diatur:

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

Saya mengharapkan sesuatu dengan UTF-8. Ini adalah pengaturan OS X Lion yang bersih, dengan bahasa Spanyol. Saya tidak memindahkan apa pun.

Saya tidak tahu bagaimana mengaturnya ke UTF-8.

Dalam pengaturan terminal, periksa UTF-8 dan set LOCALE terbuka, meskipun itu tidak bekerja.

mamcx
sumber
2
Itu aneh. Ini seharusnya berfungsi di Terminal secara default, dengan asumsi Anda menggunakan shell default (bash) dan profil pengaturan terminal default (Basic). Perhatikan bahwa jika Anda mengubah pengkodean atau mengubah "setel variabel lingkungan lokal" mereka hanya berlaku di terminal baru, bukan yang sudah terbuka.
Chris Page
Saya menggunakan zsh (menggunakan oh my zsh! Installer), mungkin itu?
mamcx
Mungkin. Coba jalankan zsh tanpa konfigurasi khusus untuk melihat apakah masalahnya hilang. Gunakan Shell> New Command untuk menjalankan zsh --no-rcsdan zsh --no-rcs --no-global-rcsmempersempit masalah. Juga, coba jalankan localeperintah tanpa shell melalui Perintah Baru dan lihat apa yang dilaporkan.
Chris Page
@ ChrisPage Saya memiliki output yang sama persis seperti OP, dengan pengaturan yang memungkinkan di Terminal. Saya harus set locale environment variablesmematikan, me-restart terminal dan kemudian menyalakannya kembali untuk mendapatkan lingkungan yang tepat untuk muncul.
Chris
Ada jawaban menyeluruh untuk pertanyaan ini pada Ask Different .
Starfry

Jawaban:

311

Saya perhatikan masalah yang sama persis ketika masuk ke server yang menjalankan Red Hat dari mesin OSX Lion.

Coba tambahkan atau edit ~/.profilefile untuk itu untuk mengekspor pengaturan lokal Anda dengan benar setelah memulai sesi baru.

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

Dua baris yang ditambahkan ke file ini sudah cukup untuk mengatur lokal [ganti en_USuntuk lokal yang Anda inginkan, dan periksa sebelumnya bahwa itu memang diinstal pada sistem Anda ( locale -a)].

Setelah itu, Anda dapat memulai sesi baru dan memeriksa menggunakan locale:

$ locale

Berikut ini adalah output:

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"  
wormintrude
sumber
2
Juga, saya awalnya memperhatikan masalah saat menggunakan iTerm2. Solusi ini tampaknya berfungsi untuk iTerm2 dan Terminal.
wormintrude
1
Menghabiskan satu jam mencari solusi untuk masalah ini, terima kasih banyak untuk memposting pria ini. Saya dapat mengkonfirmasi itu berfungsi pada Terminal dan iTerm2.
Mariano Cavallo
7
tautan tidak valid.
Vincent Sit
11
Saya memiliki .bash_profiledi folder rumah saya dan .profiletidak bersumber ketika .bash_profilehadir. Saya perlu sumber secara manual .profiledi dalam.bash_profile
BrunoJCM
3
Luar biasa, itu berhasil, hanya sebuah catatan, sekali Anda menggunakan zsh, jangan bodoh seperti saya ... konfigurasi ada ~/.zshrc... nah sekarang berfungsi seperti pesona
Redrick
20

Saya baru-baru ini memiliki masalah yang sama pada OS X Sierra dengan bash shell, dan berkat jawaban di atas saya hanya perlu mengedit file

~/.bash_profile 

dan menambahkan garis-garis itu

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
FredericK
sumber
1
Ini sangat membantu. Saya tidak punya bash_profiledan saya membuatnya secara manual. Dan tanpa menempatkan exportke bash_profile, setiap kali kita ulang terminal bahasa akan rollback.
Phan Van Linh
7

Ini adalah headbreaker untuk waktu yang lama. Saya melihat sekarang ini OSX .. saya mengubahnya di seluruh sistem dan berfungsi dengan sempurna

Ketika saya menambahkan ini LANG dalam Centos6 dan Fedora juga merupakan LANG pilihan saya. Anda juga dapat "hapus centang" ekspor atau atur lokal di pengaturan terminal (OSX) / etc / profile

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

Marcel Kraan
sumber
5

jika Anda telah menginstal zsh, Anda juga dapat memperbarui ~/.zprofiledengan

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

dan periksa output menggunakan localecmd seperti yang ditunjukkan di atas

❯ 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"
Milland
sumber
0

Saya memiliki masalah ini dengan MacOS High Sierria.

Tangkapan layar 1

Anda dapat mengatur lokal serta bahasa ke format UTF-8 menggunakan perintah di bawah ini:

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

Tangkapan layar 2

Sekarang untuk memeriksa apakah lingkungan lokal diperbarui, gunakan perintah di bawah ini:

Locale

Tangkapan layar 3

Jayprakash Dubey
sumber
1
Bagaimana jawaban ini berbeda dengan yang diterima?
Denis V
2
Apa tujuan dari foto pertama? Bukankah itu sama dengan yang terakhir?
narengi