Trong OS X Lion, LANG không được đặt thành UTF-8, làm thế nào để khắc phục nó?


148

Tôi cố gắng thiết lập postback trong OS X Lion và thấy rằng đó không phải là thiết lập chính xác môi trường LOCALE var.

Đây là những gì được thiết lập:

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

Tôi mong đợi một cái gì đó với UTF-8. Đây là một thiết lập OS X Lion sạch sẽ, với ngôn ngữ Tây Ban Nha. Tôi không di chuyển bất cứ điều gì.

Tôi không biết cách thiết lập nó thành UTF-8.

Trong cài đặt thiết bị đầu cuối, hãy kiểm tra UTF-8 và đặt LOCALE ở chế độ mở, mặc dù điều đó không hoạt động.


2
Thật ki quặc. Nó sẽ hoạt động trong Terminal theo mặc định, giả sử bạn đang sử dụng shell mặc định (bash) và cấu hình cài đặt terminal mặc định (Basic). Lưu ý rằng nếu bạn thay đổi mã hóa hoặc thay đổi "đặt biến môi trường cục bộ" thì chúng chỉ có hiệu lực trong các thiết bị đầu cuối mới, không phải là các biến đã được mở.
Chris Trang

Tôi sử dụng zsh (sử dụng oh my zsh! Installer), có lẽ vậy không?
mamcx

Có khả năng. Hãy thử chạy zsh mà không có bất kỳ cấu hình tùy chỉnh nào để xem sự cố có biến mất không. Sử dụng Shell> Lệnh mới để chạy zsh --no-rcszsh --no-rcs --no-global-rcsthu hẹp vấn đề. Ngoài ra, hãy thử chỉ chạy localelệnh mà không cần shell thông qua Lệnh mới và xem những gì nó báo cáo.
Chris Trang

@ChrisPage Tôi có đầu ra chính xác giống như OP, với các cài đặt đó được bật trong Terminal. Tôi đã phải set locale environment variablestắt, khởi động lại thiết bị đầu cuối và sau đó bật lại để có được môi trường phù hợp để hiển thị.
Chris

Có một câu trả lời thấu đáo cho câu hỏi này trên Hỏi khác nhau .
starfry

Câu trả lời:


311

Tôi nhận thấy chính xác vấn đề tương tự khi đăng nhập vào các máy chủ chạy Red Hat từ máy OSX Lion.

Hãy thử thêm hoặc chỉnh sửa ~/.profiletệp để xuất chính xác các cài đặt ngôn ngữ của bạn khi bắt đầu một phiên mới.

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

Hai dòng được thêm vào tệp sẽ đủ để đặt ngôn ngữ [thay thế en_UScho miền địa phương bạn muốn và kiểm tra trước xem nó có thực sự được cài đặt trên hệ thống của bạn không ( locale -a)].

Sau đó, bạn có thể bắt đầu một phiên mới và kiểm tra bằng cách sử dụng locale:

$ locale

Sau đây nên là đầu ra:

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
Ngoài ra, ban đầu tôi nhận thấy vấn đề trong khi sử dụng iTerm2. Cách giải quyết này dường như hoạt động cho cả iTerm2 và Terminal.
wormintrude

1
Dành một giờ để tìm kiếm một giải pháp cho vấn đề này cảm ơn rất nhiều vì đã đăng người đàn ông này. Tôi có thể xác nhận nó hoạt động trên cả Terminal và iTerm2.
Mariano Cavallo

7
liên kết không hợp lệ.
Vincent Ngồi

11
Tôi có một .bash_profiletrong thư mục nhà của tôi và .profilekhông có nguồn gốc khi .bash_profilecó mặt. Tôi cần phải tự nhập nguồn .profilebên trong.bash_profile
BrunoJCM

3
Thật tuyệt vời, điều đó đã làm được, chỉ là một ghi chú, một khi bạn sử dụng zsh, đừng ngu ngốc như tôi ... cấu hình ở đó ~/.zshrc... giờ cũng hoạt động như một bùa mê
Redrick

20

Gần đây tôi gặp vấn đề tương tự trên OS X Sierra với bash shell và nhờ các câu trả lời ở trên, tôi chỉ phải chỉnh sửa tệp

~/.bash_profile 

và nối những dòng đó

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

1
Nó thực sự có ích. Tôi không có bash_profilevà tôi đã tạo nó bằng tay. Và không đưa exportđến bash_profile, mỗi lần chúng tôi thiết lập lại thiết bị đầu cuối ngôn ngữ sẽ rollback.
Phan Văn Linh

7

Đây là một headbreaker trong một thời gian dài. Tôi thấy bây giờ là OSX .. tôi thay đổi toàn hệ thống và nó hoạt động hoàn hảo

Khi tôi thêm cái này thì LANG trong Centos6 và Fedora cũng là LANG ưa thích của tôi. Bạn cũng có thể "bỏ chọn" xuất hoặc đặt ngôn ngữ trong cài đặt đầu cuối (OSX) / etc / profile

xuất LC_ALL = en_US.UTF-8
xuất LANG = en_US.UTF-8


5

nếu bạn đã cài đặt zsh, bạn cũng có thể cập nhật ~/.zprofilevới

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

và kiểm tra đầu ra bằng localecmd như hình trên

❯ 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

Tôi gặp vấn đề này với MacOS High Sierria.

Ảnh chụp màn hình 1

Bạn có thể thiết lập ngôn ngữ cũng như ngôn ngữ sang định dạng UTF-8 bằng lệnh bên dưới:

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

Ảnh chụp màn hình 2

Bây giờ để kiểm tra xem môi trường miền địa phương có được cập nhật hay không, hãy sử dụng lệnh bên dưới:

Locale

Ảnh chụp màn hình 3


1
Làm thế nào là câu trả lời này khác nhau so với câu trả lời được chấp nhận?
Denis V

2
Mục đích của pic đầu tiên là gì? Nó không giống như cái cuối cùng sao?
narengi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.