Làm cách nào để sửa PuTTY hiển thị các ký tự bị cắt xén?


76

Kết nối từ PC Windows 7 qua SSH đến máy chủ Ubuntu bằng PuTTY , tôi gặp một số lỗi màn hình:

nhập mô tả hình ảnh ở đây

Tức là:

  • "Vẽ hai lần" lựa chọn bên trong Midnight Commander (MC).
  • Các ký tự khác như các phần tử dòng được vẽ là các ký tự sai (ví dụ: "â" thay vì "|").

Tôi đã kết nối với cùng một máy chủ Ubuntu với thiết bị đầu cuối và SHH từ Mac OS X và không bị cắt xén màn hình này (tức là mọi thứ đều trông và hoạt động chính xác). Tôi đã thử chơi với các cài đặt phông chữ bên trong PuTTY, thay đổi nó từ Courier New thành Consolas nhưng không gặp may.

Do đó, câu hỏi của tôi là:

Làm cách nào để định cấu hình PuTTY để hiển thị chính xác các ký tự đặc biệt và không vẽ hai lần / ghi đè lên các dòng màn hình?


1
Với SecureCRT: Chọn Tùy chọn -> Tùy chọn phiên -> Thiết bị đầu cuối -> Xuất hiện -> Mã hóa ký tự -> chọn: UTF-8. Hy vọng giúp đỡ những người khác như tôi!
Vunb

Câu trả lời:


72

Bạn gần như chắc chắn đã đặt sai bộ ký tự trong cài đặt PuTTY của mình .

Xác minh bộ ký tự trên hệ thống từ xa bằng cách chạy lệnh:

locale

Điều này sẽ trả về một cái gì đó như:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Vì vậy, hãy kiểm tra cài đặt PuTTY của bạn trong phần Dịch và đảm bảo rằng bạn đã UTF-8đặt làm bộ ký tự.

Cấu hình lại PuTTY

Bạn có thể cần phải điều chỉnh cài đặt vẽ đường thẳng, nhưng có lẽ không có khả năng.


14
Điều này là không đủ trong mọi trường hợp. Bạn cũng nên xuất biến sau đây sang môi trường của mình: NCURSES_NO_UTF8_ACS=1 [thông tin thêm ]
Piotr Jurkiewicz

2
trong trường hợp localetrả về, POSIXbạn có thể đã vô hiệu hóa usePAM trong cấu hình sshd
user2693017

4
Nếu miền địa phương trả về một cái gì đó giống như POSIX, hãy phát hành update-locale LANG=en_US.utf8tại dòng lệnh - xem thomas-krenn.com/de/wiki/Locales_unter_Ub Ubuntu_konfigurieren
koppor

@ michael-hampton, hệ thống của tôi được định cấu hình để sử dụng en_US.UTF-8. Tôi thấy rằng những nơi khác nhau nói những điều khác nhau về miền địa phương. Một số nơi đề cập đến tôi nên sử dụng en_US trong khi những nơi khác đề cập đến tôi nên sử dụng de_DE. Tôi đã thấy trước khi grep và các dụng cụ cốt lõi khác sử dụng ngôn ngữ để đặt bộ ký tự, tôi tin. Ý nghĩa của việc thay đổi điều này là gì?
alpha_989

@koppor, bạn đã đề cập về việc thay đổi ngôn ngữ thành en_US, trong khi michael đề cập đến việc thay đổi ngôn ngữ thành de_DE. Cái nào đúng?
alpha_989

34

Tôi gặp sự cố với aptitudechương trình của Debian mặc dù tôi đã cài đặt UTF-8. Điều làm việc với tôi là đặt 'Kết nối> Dữ liệu>' Chuỗi kiểu đầu cuối 'thành' putty 'thay vì' xterm '- rõ ràng Putty bỏ qua chuỗi ký tự để chuyển sang chế độ vẽ: http: //www.chiark.greenend .org.uk / ~ sgtatham / putty / wishlist / utf8-plus-vt100.html

nhập mô tả hình ảnh ở đây


2
Xuất sắc. Dễ dàng và nó hoạt động. (Ít nhất là trên Debian / Ubuntu.)
Nate

1
Điều này hoạt động tốt (trên PuTTY) nhưng sau đó nó đưa ra một vấn đề khác (nhỏ hơn): thay đổi tiêu đề cửa sổ được điều khiển từ xa không còn hoạt động.
ADTC

Xuất sắc. Đã giải quyết vấn đề cho ncmpc trên Ubuntu Artful.
weberjn


8

Hai yếu tố cơ bản là Window / Dịch UTF-8 trong cài đặt putty và locale trong Linux, như được hướng dẫn ở đây và nhiều nơi khác.

Ngoài ra, nó có thể giúp putty đặt chuỗi kết nối / Dữ liệu / Kiểu đầu cuối thành putty và / hoặc trong Linux thành export NCURSES_NO_UTF8_ACS=1. Hai cũng được đề cập nhiều nơi.

Nhưng: bạn vẫn có thể nhận được các khối cho một số ký tự nhất định vì các phông chữ mặc định như Courier và Lucida Console không có tất cả các ký tự Unicode. Tải xuống và cài đặt http://dejavu-fonts.org/wiki/D Download và đặt putty để sử dụng nó.

Thủ thuật cuối cùng này là cần thiết để tôi có được noping( được khuyến nghị!) Để hiển thị tất cả các nhân vật đồ họa.


2
export NCURSES_NO_UTF8_ACS=1làm việc tốt nhất cho tôi Tôi chỉ cần nhớ sử dụng -Etùy chọn sudokhi tôi chạy iftopđể giữ cài đặt môi trường đó. sudo -E iftop
HeatfanJohn

5

Trong trường hợp của tôi (Ubuntu 14.04), sự cố đã xảy ra do mất tích

UsePAM yes    

cấu hình trong / etc / ssh / sshd_config vì cấu hình /etc/pam.d/sshd pam chịu trách nhiệm theo mặc định để tải / etc / default / locale vào môi trường người dùng.


CÁi này đã sửa nó giúp tôi.
Martin

5

Dành cho tất cả những anh chàng VMS nghèo khổ cuối cùng ở đây:

PuTTY → Cửa sổ → Dịch → Bộ ký tự từ xa → DEC-MCS

đã làm cho tôi.


4

Tôi đã tìm kiếm nhiều giải pháp cho việc này khi sử dụng máy Docker (cả ngôn ngữ và máy được thiết lập bởi quản trị viên hệ thống). Trong Putty của tôi, mọi thứ đều ổn (tôi đã có UTF-8), tôi cũng đang sử dụng máy khách SSH khác và có cùng một vấn đề.

Đang chạy:

mc -ac

đã giải quyết vấn đề (nhưng không hoàn toàn) và tôi đang tìm giải pháp hoàn chỉnh.

Sau khi đọc nhiều gợi ý, cuối cùng tôi cũng tìm được một giải pháp cho vấn đề của mình.

Trong thiết bị đầu cuối khi bạn chạy:

locale

xác minh địa điểm bạn đã đặt. Tôi đã mặc định Cmiền địa phương.

Để xác minh tất cả ngôn ngữ được cài đặt chạy locale -a

Tôi có ví dụ:

C
C.UTF-8
POSIX

theo mặc định

Giải pháp là xuất LANGbiến với C.UTF-8miền địa phương như vậy:

export LANG="C.UTF-8"

Bạn rõ ràng có thể thêm nó vào .bashrcđể nó tự động được thiết lập trong hồ sơ của bạn.


Tác dụng phụ của việc thay đổi biến LANG là gì? Nếu bạn đã có C.UTF-8 là LANG, tại sao lại xuất nó?
alpha_989

2

Một lý do khác bằng cách nào đó liên quan đến pam có thể ảnh hưởng đến máy chủ với xác thực powerbroker / pbis / tương tự.

grep /etc/pam.d cho trường hợp "lsass":

grep -r lsass /etc/pam.d

nếu bạn thấy trong đầu ra một cái gì đó như:

/etc/pam.d/common-session:session       sufficient        pam_lsass.so

thì có lẽ đó là nguyên nhân sâu xa của vấn đề. Cách khắc phục nhanh là thay thế "đủ" bằng "tùy chọn" bên cạnh mô-đun pam_lsass để nó trông giống như:

/etc/pam.d/common-session:session       optional        pam_lsass.so

/etc/pam.d/common-session (hoặc tệp khác có mục tương tự - có thể có một vài trong số chúng) có thể được bao gồm bởi /etc/pam.d/sshd trước khi pam_env được tải vì vậy nếu quá trình xử lý mô-đun pam kết thúc trước khi nói đến pam_env, / etc / default / locale không được tải trong môi trường người dùng và bạn có các ký tự bị cắt xén.


2

Sau 15 năm, tôi lại thấy khó chịu một lần nữa và loay hoay một lần nữa, thấy điều này, đã chọn

thay đổi cài đặt → cửa sổ → dịch → bộ char từ xa → "sử dụng mã hóa phông chữ"

và nó đã sửa nó.


2

Tôi phải đặt, trên trang Window → Trang dịch , ký tự được đặt thành:

ISO-8859-1: 1998 (Latin-1, Tây Âu)

Sau đó, và chỉ sau đó, các ký tự linraw xuất hiện chính xác.


1

Chạy mc theo cách này (đặt ngôn ngữ thành en) hoạt động với tôi:

$ LC_ALL=en mc

1

những gì làm việc cho tôi là "Kết nối, dữ liệu, chuỗi loại thiết bị đầu cuối = ansi" cộng với "Cửa sổ, dịch thuật, bộ ký tự từ xa = Sử dụng mã hóa phông chữ" sau đó set TERM=ansiở phía unix.

Tái bút Hãy nhớ tắt báo giá thông minh nếu bạn buộc phải sử dụng MS-Word.


1
Bạn cũng nên đề cập rằng bạn không kết nối với hệ thống LInux hiện đại, mà là hệ thống không phải Linux cũ hơn.
Michael Hampton

1

Vấn đề của tôi là putty được cấu hình là UTF-8 nhưng hệ thống từ xa là ISO-8859-1

Tây Âu, vì vậy tôi đã thay đổi điều đó trên putty và mọi thứ đều hoạt động tốt.

Ảnh chụp màn hình

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.