Ký tự UTF8 trong thiết bị đầu cuối Windows 10 bash


36

Tôi đã cài đặt bash shell mới trên windows 10. Tôi đang sử dụng nó cùng với ZSH. Tuy nhiên, không có ký tự utf8 nào hoạt động, chúng xuất hiện dưới dạng khối vuông. Làm cách nào để bật mã hóa ký tự utf8 trong shell làm mặc định? Điều đó có thể không?


5
Nếu mỗi ký tự xuất hiện dưới dạng một khối vuông, thì UTF-8 đã hoạt động; đó là phông chữ thiếu hỗ trợ Unicode.
grawity

sử dụng chcp 65001để thay đổi codepage thành UTF-8 và thay đổi phông chữ thành Consolas
phuclv

Tôi chuyển sang SimSun-Ext Bphông chữ và tất cả các ký tự đang hiển thị chính xác.
Ryan Foley

5
@grawity Tôi đã sử dụng uubntu mono và bây giờ đã chuyển sang consolas. Thay vì một ô vuông trống, tôi lấy một ô vuông có dấu chấm hỏi bên trong. Tôi cũng đã thử đề xuất chcp nhưng nó đã được đặt thành mã hóa UTF-8 khi tôi kiểm tra các thuộc tính.
Ortix92

2
Tôi muốn chỉ ra rằng vấn đề này vẫn chưa được giải quyết và tôi vẫn không thể hiển thị đúng các ký tự utf8 bằng cách sử dụng ZSH
Ortix92

Câu trả lời:


12

Nhấp chuột phải vào thanh tiêu đề ở đầu cửa sổ bash, chọn thuộc tính mục nhập. Trong cửa sổ mở là một tab nơi bạn có thể thay đổi phông chữ. Tôi đã thay đổi Phông chữ thành "Mã nguồn Pro" và cỡ 14.

Có vẻ tốt và tất cả các nhân vật utf-8 đang làm việc.


Đó là câu trả lời đúng. Bạn có thể chọn phông chữ bất cứ điều gì bạn thích mà hỗ trợ UTF8. Tôi đã cài đặt Menlo và sau đó quên thay đổi nó trong các tùy chọn bash, thật lòng thậm chí không nghĩ về nó.
StalkAlex

Xin lưu ý rằng tôi đã thử tất cả các tùy chọn mặc định trong các cửa sổ (bao gồm cả Mã nguồn Pro) và ký tự dấu kiểm (✔) chỉ hoạt động với tôi với phông chữ "DejaVu Sans Mono" được đề xuất bởi @ user3599934!
Sevron

10

Để thêm vào câu trả lời của Doctorj, có một vài phông chữ được cài đặt theo mặc định mà bạn có thể sử dụng (trên Windows bash shell).

Các ngôn ngữ đã được kiểm tra: tiếng Bulgaria, tiếng Ukraina, tiếng Trung giản thể, tiếng Trung Quốc truyền thống, tiếng Đan Mạch, tiếng Pháp, tiếng Đức, tiếng Ý, tiếng Nhật, tiếng Kazakhstan, tiếng Hàn, tiếng Macedonia, tiếng Mông Cổ, tiếng Na Uy, tiếng Ba Lan, tiếng Bồ Đào Nha, tiếng Nga, tiếng Serbia, tiếng Tây Ban Nha, tiếng Thụy Điển.

Các phông chữ mặc định sau đây hiển thị tất cả các ký tự được quan sát:

  • MS gothic
  • NSimSun
    • Không xuất hiện để hiển thị tất cả tiếng Kazakhstan.
  • SimSun-ExtB (phông chữ raster) - Đề xuất của tôi

Cả MS Gothic và NSimSun

  • Tạo ra các ngôn ngữ không phải là tiếng Latin không phải tiếng Latin (tiếng Trung, tiếng Nhật, tiếng Hàn) (tiếng Macedonia, tiếng Kazakhstan, tiếng Bulgaria).
  • Có phần bù dọc lẻ trên các ký tự Latinh có dấu (á, é).
  • Không hiển thị ít nhất một nhân vật người Macedonia.

SumSun-ExtB (phông chữ raster):

  • Có một thông báo cảnh báo rằng phông chữ Raster có thể không hiển thị tốt.
  • Hầu hết các ký tự được hiển thị tối (có thể là một vấn đề với độ sáng màn hình thấp).
  • Các ký tự không phải ASCII sáng, so với các ký tự ASCII (giải pháp có thể, sử dụng tùy chọn in đậm).
  • Các ký tự của tất cả các ngôn ngữ gần nhau (dễ thấy khoảng cách giữa các từ).
  • Có vẻ đáng tin cậy hơn cho các ngôn ngữ không phải tiếng Latin không phải tiếng Latin.

Với bất kỳ phông chữ nào, cả Command Prompt và PowerShell, những điều kỳ lạ xảy ra khi bạn nhấp vào các ký tự không phải ASCII, mặc dù nó trở lại bình thường khi bạn tô sáng văn bản.

Để cài đặt phông chữ: Lưu ý rằng bạn cần thay đổi phông chữ cho trình bao Windows bạn đang sử dụng, chẳng hạn như Dấu nhắc lệnh hoặc PowerShell, chứ không phải cách Linux thông qua bash. Liên kết này mô tả phông chữ nào có thể được sử dụng trên Dấu nhắc lệnh (phông chữ đơn cách và cách cài đặt và chọn phông chữ cho Dấu nhắc lệnh): Thêm phông chữ vào Dấu nhắc lệnh

  • Đưa lên Registry Editor (chạy "regedit")
  • Tìm thư mục HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Console \ TrueTypeFont
  • Nhấp chuột phải (hoặc Chỉnh sửa) -> Mới -> Giá trị chuỗi
  • Đặt tên cho phông chữ có nhiều hơn 0 so với cái cuối cùng (chẳng hạn như "000").
  • Nhấp chuột phải vào mục và chọn "Sửa đổi ..."
  • Nhập tên của phông chữ hoặc tệp OTF (không có .otf).

Để biết thông tin về việc cài đặt phông chữ thông qua dòng lệnh trên Windows, hãy xem câu hỏi và câu trả lời này.

  • Tôi đã thử cài đặt "Source Code Pro" nhưng nó không xuất hiện trong các phông chữ đối với tôi.
  • Tôi đã cài đặt DejaVu Sans Mono và nó hoạt động với hầu hết các ngôn ngữ nhưng hoàn toàn không hoạt động đối với CJK.
  • Tôi đã cài đặt phông chữ không gian Noto của Google và nó đã hoạt động, nhưng không phải cho CJK. Ngoài ra, họ đặc biệt nói rằng họ không có hỗ trợ không gian vũ trụ cho CJK.
  • Tôi đã cài đặt Inconsolata của Google và nó không đáng để thử.
  • Tôi đã cài đặt GNU FreeFont (FreeMono) và nó đã hoạt động, nhưng không phải cho CJK.
  • Tôi đã từ bỏ và quay trở lại SimSun-ExtB.

(Lưu ý: Tôi chưa có đủ danh tiếng để đăng các liên kết).


6

Bạn có thể thử DejaVu Sans Mono - nó hiệu quả với tôi.


11
Mặc dù đây có thể là giải pháp cho vấn đề của OP, nhưng đó là một gợi ý hơn là câu trả lời chất lượng cao. Nó có thể được cải thiện bằng cách đưa ra các hướng dẫn về: 1) cách thay đổi phông chữ cho thiết bị đầu cuối Windows 10 Bash; 2) cách cài đặt phông chữ đã nói (trừ khi nó có trong mọi Windows 10 theo mặc định - Tôi không biết Linux).
Kamil Maciorowski

1
Tôi đã sử dụng Ubuntu Mono trước đây và có vấn đề với nó. DejaVu Sans Mono đã giải quyết vấn đề.
smonff

0

Đây thực sự là một nhận xét nhiều hơn là một câu trả lời, nhưng vì SE không cho phép tôi nhận xét ...

Bạn chưa cung cấp đủ thông tin. Unicode cung cấp hơn một triệu ký tự có thể, trong đó hơn 100.000 ký tự đã được xác định. . để cung cấp glyphs (hình ảnh của các ký tự) cho tất cả các ký tự đó. (Có một hoặc hai cung cấp một hộp có điểm mã bên trong, nhưng đó không phải là điều bạn muốn.)

Như grawity đã nói cách đây hơn hai năm, nếu bạn nhận được một hộp nơi bạn mong đợi một ký tự, thì ứng dụng của bạn đã hiển thị Unicode (có lẽ là mã hóa UTF-8 của Unicode). Những gì bạn thiếu là một phông chữ cung cấp glyphs cho bất kỳ tập lệnh nào bạn muốn hiển thị. Nếu bạn đang hiển thị tiếng Nga, bạn sẽ muốn một phông chữ với các ký tự Cyrillic; Nếu bạn muốn hiển thị tiếng Trung, thì bạn cần một phông chữ với các ký tự đó. (Hầu hết các phông chữ như vậy cũng sẽ hiển thị các ký tự Latin - loại chúng tôi sử dụng cho tiếng Anh - nhưng không nhất thiết phải đẹp.)

Vì vậy, câu hỏi của tôi cho bạn là: bạn đang cố gắng hiển thị kịch bản nào? Cho đến khi chúng ta biết điều đó, tất cả các câu trả lời sẽ là phỏng đoán.

BTW, có một số tập lệnh khá phức tạp và chỉ một số chương trình sẽ hiển thị chúng chính xác, ngay cả khi bạn có phông chữ phù hợp. Trong số này có tiếng Miến Điện, một số tập lệnh Indicator (ví dụ Devanagari) và tiếng Ả Rập (được viết từ phải sang trái và có các ký tự sẽ được hiển thị khác nhau tùy theo các ký tự liền kề).

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.