terminal: özel karakterleri görüntüleme


11

htopÇizgiler ve çerçeveler gibi bazı programlarda düzgün görüntülenmez. Bunun yerine -ve olarak görüntülenirler /.

resim açıklamasını buraya girin

Ancak başka bir makinede, doğru çizgiler olarak doğru şekilde görüntülenirler:

resim açıklamasını buraya girin

Bunun bir terminal sorunu olup olmadığından veya bazı paketlerin gerekli olduğundan emin değilim.

İlgili olması durumunda: Sistemim Debian Wheezy, tercümanım bashve terminal öykünücümgnome-terminal


Terminal tarafından kullanılan yazı tipini değiştirmeyi denediniz mi?
goldilocks

2
Bu, kutular veya soru işaretleri gibi yer tutucu karakterler Unicode karakterlerin yerinde olsa da olası bir çözüm olabilir, ancak örneğinde htopASCII karakterleri gösteriliyorsa. Ancak, varsayılan terminal yazı tipi Unicode değilse, kodlama da olasıdır, bu yüzden cevabımı ekledim.
raehik

Yanıtlar:


11

En iyi örneğiniz Unicode olmayan bir yerel ayarla (yani ASCII) çalışıyor. $ LANG ortam değişkeninizi kontrol edin (deneyin export | grep LANG); büyük olasılıkla bir .UTF-8sonek bulamazsınız . Eklemeyi deneyin:

export LANG=$LANG.UTF-8

Diğer örneğiniz, son kabuklar için varsayılan olması gereken UTF-8 yerel ayarıyla çalışıyor. Öyle görünüyor htopASCII ile bazı oldukça eğreti olanları alırken bu kadar alt resimde, sen güzel Unicode karakterleri olsun - yerelleştirme ve görüntüler ASCII veya Unicode karakterleri ya algılar. En iyi resmin makinesinin yerel ayarını Unicode olarak değiştirmenizi öneririm (bkz. Yerel Ayar - Debian Wiki ).

Bu işe yaramazsa, sorun , terminal öykünücünüz olabilir . Varsayılan kodlama Unicode olmayan olabilir. Terminal öykünücünüzün varsayılan kodlamasını UTF-8 olarak değiştirin ( xfce4-terminalGelişmiş sekmesinde buldum). Yapamıyorsanız, mevcut yazı tipiniz Unicode'u desteklemiyor olabilir: yazı tipinizi Unicode olarak değiştirmeyi deneyin.

[Garip bir şekilde, bir kabuk oturumunda yerel ayarımı bir kez htopASCII olarak değiştirdiğimde, geri değiştirdikten sonra bile her zaman ASCII karakterlerini görüntülediğimi gördüm . Herhangi bir nedenden dolayı zaman zaman kabuğunuzdaki yerel ayarınızı değiştiriyorsanız, bu sizin sorununuz olabilir.]


3

Garip olan şey, htopUnicode ile / Unicode olmadan çizgi çizebilen ncurses kullanıyor. Ancak, kaynak koduna CRT.cbakıldığında açıklama gösterilir:

#ifdef HAVE_LIBNCURSESW
   if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0)
      CRT_utf8 = true;
   else
      CRT_utf8 = false;
#endif

   CRT_treeStr =
#ifdef HAVE_LIBNCURSESW
      CRT_utf8 ? CRT_treeStrUtf8 :
#endif
      CRT_treeStrAscii;

ve CRT_treeStrUtf8değer

const char *CRT_treeStrUtf8[TREE_STR_COUNT] = {
   "\xe2\x94\x80", // TREE_STR_HORZ ─
   "\xe2\x94\x82", // TREE_STR_VERT │
   "\xe2\x94\x9c", // TREE_STR_RTEE ├
   "\xe2\x94\x94", // TREE_STR_BEND └
   "\xe2\x94\x8c", // TREE_STR_TEND ┌
   "+",            // TREE_STR_OPEN +
   "\xe2\x94\x80", // TREE_STR_SHUT ─
};

Bununla birlikte, ncurses (herhangi bir curses uygulaması) kodlamanın UTF-8 olup olmadığına güvenmeyen taşınabilir sembollere sahiptir. (Örneğin bazı uygulamalar iletişim 'ın --ascii-linesisteğe bağlı) bir sağlamak seçeneği ASCII hat-çizim kullanmak için, ancak bu bile çizgiyi-çizim kütüphanenin etkin kullanımı yapmıyor Ncurses ile sağlanan kullanma girişiminde uymayan bir uygulama.

Kısacası, böyle davranan bir programla karşılaştığınızda, geliştiricilere bir hata olarak rapor etmelisiniz.

Daha fazla okuma:


Sorunumu doğrudan çözemese de ( beklenen Unicode çizgi çizme karakterlerini ayarlamak LANG/ LC_ALLetkinleştirmek htop), bu çok ilginç. Açıklamak için zaman ayırdığınız için teşekkür ederiz!
wrksprfct
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.