Làm thế nào để tìm hiểu xem một thiết bị đầu cuối hỗ trợ UTF-8


21

Tôi đang thiết lập mô-đun CPAN cho perl trên CentO 5 và một trong những câu hỏi là 'Thiết bị đầu cuối của bạn có hỗ trợ UTF-8 không?' (diễn giải). Làm thế nào để tôi tìm ra?

Câu trả lời:


15

Thực sự, cách chắc chắn để kiểm tra là tải xuống một tệp văn bản và gửi nó trong thiết bị đầu cuối và xem mọi thứ có ổn không.

hoặc, nếu bạn có thể, biên dịch lại thiết bị đầu cuối cho phép tùy chọn unicode (giả sử nó có một).

$ TATE và $ LANG trông như thế nào?


$ TERM là "xterm" $ LANG là "en_US.UTF-8" (aha!) Tệp văn bản hiển thị độc đáo trong thiết bị đầu cuối, nhưng thật kỳ lạ, không phải trong Firefox.
Whatsit

vâng, tôi thực sự đã gặp phải điều tương tự: - / ... khi tôi thử đề nghị đó, tôi đã nhận được dấu hỏi
theman_on_osx

$ LANG chỉ cho bạn biết hệ thống của bạn sẽ sử dụng gì khi viết vào thiết bị xuất chuẩn / thiết bị xuất chuẩn. Nó không nói bất cứ điều gì về khả năng của thiết bị đầu cuối. Tuy nhiên, nếu mọi thứ hệ thống của bạn in các ký tự lạ trông ổn, thì thiết bị đầu cuối của bạn có thể hỗ trợ UTF-8.
Epcylon

2
Điều này thậm chí có thể được tự động, bằng cách hiển thị một số văn bản và kiểm tra độ rộng của nó (bằng cách đọc vị trí con trỏ trước và sau). Tôi đã đăng một bằng chứng về khái niệm một đề xuất một cái gì đó khác.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles, câu trả lời của bạn rất đơn giản. Yêu nó!

20

Nhập cái này vào terminal của bạn:

echo -e '\xe2\x82\xac' 

Nếu thiết bị đầu cuối của bạn hỗ trợ UTF-8, nó sẽ xuất ký hiệu euro:


Không phải tất cả các phông chữ đều có ký hiệu euro, vì vậy một điểm mã kiểm tra khác nhau có thể được khuyến khích.
Michael Hampton

5

Cách tốt nhất: chạy theo và kiểm tra đầu ra. Nó sẽ là chữ O viết hoa với dấu mũ nếu thiết bị đầu cuối hiển thị UTF-8.

perl -le 'print "\x{c3}\x{94}"'

Tôi khá chắc chắn rằng thiết bị đầu cuối của tôi hỗ trợ UTF-8 ngay bây giờ (đã vượt qua bài kiểm tra được đề xuất bởi theman_on_osx) nhưng điều này chỉ xuất ra một dòng trống. Chuyện gì đang xảy ra vậy?
Whatsit

Có thể phông chữ bạn đang sử dụng trong ứng dụng đầu cuối của bạn không hỗ trợ các ký tự UTF-8.
therek

4
Tôi biết điều này là vô cùng muộn nhưng cờ UTF-8 Out làm cho nó hoạt động tốt hơnperl -CO -le 'print "\x{d4}"'
Ashley

3
Hoặc không có tùy chọn -CO, hãy cung cấp cho Perl các byte UTF-8 chính xác: $ perl -le 'print "\ x {c3} \ x {94}"' Ô
Tim

2

Cách bắn chắc chắn nhất là sử dụng lệnh 'locale'. Nó sẽ in ra tất cả các biến số khác nhau và lặt vặt quyết định bộ ký tự được sử dụng. Chẳng hạn, đây là đầu ra của tôi trên RHEL5.3, được đặt thành chỉ sử dụng UTF-8 theo mặc định.

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=

1
Điều này không kiểm tra thiết bị đầu cuối, chỉ cài đặt ngôn ngữ (trong thực tế không phải luôn được thiết lập bởi trình giả lập thiết bị đầu cuối, có thể không phản ánh trạng thái hiện tại của thiết bị đầu cuối hoặc có thể bị ghi đè bởi một số cấu hình người dùng).
Gilles 'SO- ngừng trở nên xấu xa'

1

Bạn chỉ có thể sử dụng lệnh sau:

locale charmap

1
Điều này không kiểm tra thiết bị đầu cuối. Nó chỉ hiển thị các cài đặt ngôn ngữ.
grawity

1
curl http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

hoặc là

wget -O - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

Điều này rõ ràng đòi hỏi wgethoặc curl.


-1
UTF=$(echo -e "\u263A")
if [[ ! "$UTF" =~ "A" ]]  ; then
 echo -n "UNICODE here!"
fi

2
Điều này không kiểm tra thiết bị đầu cuối. Nó chỉ kiểm tra xem echonội dung có hỗ trợ hay không \u.
grawity
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.