Karakter UTF8 di terminal bash windows 10

36

Saya telah menginstal bash shell baru di windows 10. Saya menggunakannya bersama dengan ZSH. Namun, tidak ada karakter utf8 yang berfungsi, mereka muncul sebagai blok persegi. Bagaimana cara mengaktifkan pengkodean karakter utf8 di shell sebagai default? Apakah itu mungkin?

Ortix92
sumber
5
Jika setiap karakter muncul sebagai satu blok persegi, maka UTF-8 sudah berfungsi; font yang tidak memiliki dukungan Unicode.
grawity
gunakan chcp 65001untuk mengubah codepage ke UTF-8 dan mengubah font ke Consolas
phuclv
Saya beralih ke SimSun-Ext Bfont dan semua karakter ditampilkan dengan benar.
Ryan Foley
5
@grawity Saya menggunakan uubntu mono dan sekarang beralih ke konsol. Alih-alih kotak persegi kosong saya mendapatkan kotak persegi dengan tanda tanya di dalamnya. Saya juga mencoba saran chcp tetapi sudah diatur ke pengkodean UTF-8 ketika saya memeriksa properti.
Ortix92
2
Saya ingin menunjukkan bahwa masalah ini masih belum terpecahkan dan bahwa saya masih tidak dapat menampilkan karakter
unfode

Jawaban:

12

Klik kanan pada bilah judul di bagian atas jendela bash, pilih properti entri. Di jendela pembuka adalah tab di mana Anda dapat mengubah font. Saya mengubah Font menjadi "Source Code Pro" dan ukuran 14.

Terlihat bagus dan semua karakter utf-8 berfungsi.

Doctorj
sumber
Itu jawaban yang benar. Anda dapat memilih font apa pun yang Anda suka yang mendukung UTF8. Saya menginstal Menlo dan kemudian lupa untuk mengubahnya dalam opsi bash, jujur ​​bahkan tidak memikirkannya.
StalkAlex
Harap dicatat bahwa saya telah mencoba semua opsi default di windows (termasuk Source Code Pro) dan karakter tanda centang (✔) hanya berfungsi untuk saya dengan font "DejaVu Sans Mono" yang disarankan oleh @ user3599934!
Sevron
10

Untuk menambah jawaban Doctorj, ada beberapa font yang diinstal secara default yang dapat Anda gunakan (pada Windows 10 bash shell).

Bahasa yang diuji: Bulgaria, Ukraina, Cina Sederhana, Cina tradisional, Denmark, Prancis, Jerman, Italia, Jepang, Kazakh, Korea, Makedonia, Mongolia, Norwegia, Polandia, Portugis, Rusia, Serbia, Spanyol, Swedia.

Font default berikut menampilkan semua karakter yang diamati:

  • MS Gothic
  • NSimun
    • Tampaknya tidak menampilkan semua Kazakh.
  • SimSun-ExtB (raster font) - Rekomendasi saya

Baik MS Gothic maupun NSimSun

  • Spasi bahasa non-Latin non-CJK (Cina, Jepang, Korea) (Makedonia, Kazakh, Bulgaria).
  • Memiliki offset vertikal ganjil pada karakter Latin beraksen (á, é).
  • Tidak menampilkan setidaknya satu karakter Makedonia.

SumSun-ExtB (raster font):

  • Ada pesan peringatan yang mengatakan bahwa font Raster mungkin tidak ditampilkan dengan baik.
  • Sebagian besar karakter ditampilkan dengan gelap (bisa jadi masalah dengan kecerahan layar rendah).
  • Karakter non-ASCII cerah, dibandingkan dengan karakter ASCII (solusi yang mungkin, gunakan opsi tebal).
  • Karakter semua bahasa saling berdekatan (lebih mudah melihat jarak antar kata).
  • Tampaknya lebih dapat diandalkan untuk bahasa non-Latin non-CJK.

Dengan salah satu font ini, baik Command Prompt dan PowerShell, hal-hal aneh terjadi ketika Anda mengklik karakter non-ASCII, meskipun kembali normal ketika Anda menyorot teks.

Untuk menginstal font: Perhatikan bahwa Anda perlu mengubah font untuk shell Windows yang Anda gunakan, seperti Command Prompt atau PowerShell, bukan cara Linux melalui bash. Tautan ini menjelaskan font mana yang dapat digunakan pada Command Prompt (font monospace, dan cara menginstal dan memilih font untuk Command Prompt): Menambahkan font ke Command Prompt

  • Memunculkan Registry Editor (jalankan "regedit")
  • Temukan folder HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Console \ TrueTypeFont
  • Klik kanan (atau Edit) -> Baru -> Nilai String
  • Beri nama font dengan satu lebih dari 0 daripada yang terakhir (seperti "000").
  • Klik kanan entri dan pilih "Ubah ..."
  • Masukkan nama font atau file OTF (tanpa .otf).

Untuk informasi tentang cara menginstal font melalui baris perintah pada Windows, lihat pertanyaan dan jawaban ini.

  • Saya mencoba menginstal "Source Code Pro" tetapi tidak muncul di font untuk saya.
  • Saya menginstal DejaVu Sans Mono dan berfungsi untuk sebagian besar bahasa tetapi tidak berfungsi sama sekali untuk CJK.
  • Saya menginstal font monospace Noto Google, dan itu berhasil, tetapi tidak untuk CJK. Juga, mereka secara khusus mengatakan mereka tidak memiliki dukungan monospace untuk CJK.
  • Saya menginstal Google Inconsolata, dan itu tidak layak untuk dicoba.
  • Saya menginstal GNU FreeFont (FreeMono), dan itu berhasil, tetapi tidak untuk CJK.
  • Saya menyerah dan kembali ke SimSun-ExtB.

(Catatan: Saya belum memiliki reputasi yang cukup untuk memposting tautan).

Joshua Mathias
sumber
6

Anda dapat mencoba DejaVu Sans Mono - ini bekerja untuk saya.

pengguna3599934
sumber
11
Meskipun ini mungkin solusi untuk masalah OP, itu lebih merupakan petunjuk daripada jawaban berkualitas tinggi. Ini dapat ditingkatkan dengan memberikan instruksi pada: 1) cara mengubah font untuk terminal Bash Windows 10; 2) cara menginstal font tersebut (kecuali jika ada di setiap Windows 10 secara default - saya di Linux, saya tidak tahu).
Kamil Maciorowski
1
Saya menggunakan Ubuntu Mono sebelumnya dan memiliki masalah dengannya. DejaVu Sans Mono memecahkan masalah ini.
smonff
0

Ini benar-benar lebih banyak komentar daripada jawaban, tetapi karena SE tidak mengizinkan saya untuk berkomentar ...

Anda belum memberikan informasi yang cukup. Unicode menyediakan lebih dari satu juta karakter yang mungkin, yang lebih dari 100.000 karakter telah ditetapkan. (Yang tersisa adalah ketika kita menghubungi makhluk luar angkasa, atau lebih mungkin untuk sistem penulisan Earthlings yang belum dikodekan.) Ini dibagi di antara sekitar 150 skrip: Latin, Sirilik, Arab, Cina ... Tidak ada font yang muncul untuk memasok mesin terbang (gambar karakter) untuk semua karakter tersebut. (Ada satu atau dua yang memasok kotak dengan titik kode di dalamnya, tapi bukan itu yang Anda inginkan.)

Seperti kata grawity lebih dari dua tahun yang lalu, jika Anda mendapatkan kotak di mana Anda mengharapkan satu karakter, maka aplikasi Anda sudah menampilkan Unicode (mungkin pengkodean UTF-8 Unicode). Yang tidak Anda miliki adalah font yang memasok mesin terbang untuk skrip apa pun yang ingin Anda tampilkan. Jika Anda menampilkan bahasa Rusia, Anda ingin font dengan karakter Cyrillic; jika Anda ingin menampilkan bahasa Mandarin, maka Anda memerlukan font dengan karakter tersebut. (Kebanyakan font semacam itu juga akan menampilkan karakter Latin - jenis yang kami gunakan untuk bahasa Inggris - tetapi tidak harus cantik.)

Jadi pertanyaan saya untuk Anda adalah: skrip apa yang ingin Anda tampilkan? Sampai kita tahu itu, semua jawaban akan menjadi tebakan.

BTW, ada beberapa skrip yang cukup rumit, dan hanya beberapa program yang akan menampilkannya dengan benar, bahkan jika Anda memiliki font yang tepat. Di antaranya adalah Burma, beberapa skrip Indic (Devanagari, misalnya), dan Arab (yang ditulis kanan-ke-kiri, dan memiliki karakter yang harus ditampilkan secara berbeda tergantung pada karakter yang berdekatan).

Mike Maxwell
sumber