Unicode karakterler neden düzgün oluşturulmuyor?


19

Arka fon:

  • Komut istemimde bazı unicode karakterler var (git durum işaretleri aslında)
  • Ben kemer linux xfce altında urxvt çalıştırıyorum.
  • .Xresources satırı ile belirtilen Powerline yazı tipi için DejaVu Sans Mono kullanıyorum:

    URxvt*font: xft:DejaVu Sans Mono for Powerline:pixelsize=14

Urxvt 'yi başlattığımda unicode karakterler düzgün görüntülenmiyor.

Örneğin

● şu şekilde işler

Ancak, daha sonra urxvtilk terminalin içinden yeni bir başlangıç ​​yaparsam, her şey doğru şekilde işler.

İki terminal arasındaki ortamda herhangi bir fark yok gibi görünüyor.

İlk çağırma ile iç içe çağırma arasındaki fark ne olabilir? Yazı tipinin 'dış' örnekte doğru olmadığından şüpheleniyorum, ancak çalışan bir X penceresinin yazı tipini nasıl kontrol edeceğimden emin değilim

GÜNCELLEME : Görünüşe göre yerel ayar, xfce4 için uygulama başlatıcısında doğru bir şekilde ayarlanmadı, ancak muhtemelen ilk terminalin içindeki kabuk kendi yerel ayarını oluşturuyor, yani her iki kabuk da aynı yerel ayara sahip.

ekleme

export LANG=en_GB.UTF-8

xfce4 başlatılmadan önce .xinitrc'ye giderilmiş gibi görünüyor. Bunun doğru yol olmadığından şüpheleniyorum , ama benim için yeterince iyi çalışıyor.

ekran görüntüsü sorunu göstermektedir:

resim açıklamasını buraya girin

Not: Bu soruyu serverfault.com'dan taşıdım - umarım bu site daha uygundur


X'i nasıl başlatıyorsunuz? "İlk" terminali nasıl başlatırsınız? Görünüşe göre bu ikisi için ortam farklı.
Ярослав Рахматуллин

LC_ALL=ru_RU.utf8 urxvtGeçerli X oturumundan çalıştırmayı deneyin . Rus (ve diğer Unicode) karakterleri doğru hale gelirse, ortamınızın C yerel ayarı altında çalıştığı durumdasınız demektir. Bu nedenle için yerel ayarları kontrol edin xfce. Örneğin, başlatılmışsanız, aşağıdaki .xinitrcgibi çalıştırılmadan önce yerel ayarı ayarlamayı deneyin LANG=ru_RU.utf8 exec startxfce4.
Alexander I.Grafov

Ben de aynı problemi yaşadım. Startx'i başlatma şeklimden kaynaklandı. "Exec startx" yapmak yerine .zprofile'imde "startx" yapıyordum
Samir Sadek

Yanıtlar:


12

Sorunun nedeninin tam olarak ne olduğundan emin değilim, ancak aşağıdaki adımlar yardımcı olabilir:

  1. Yerel ayarın doğru ayarlandığını doğrulayın

    $ yerel ayar
    DİL = en_US.UTF-8
    LC_CTYPE = "en_US.UTF-8"
    LC_NUMERIC = "en_US.UTF-8"
    LC_TIME = "en_US.UTF-8"
    LC_COLLATE = "en_US.UTF-8"
    LC_MONETARY = "en_US.UTF-8"
    LC_MESSAGES = "en_US.UTF-8"
    LC_PAPER = "en_US.UTF-8"
    LC_NAME = "en_US.UTF-8"
    LC_ADDRESS = "en_US.UTF-8"
    LC_TELEPHONE = "en_US.UTF-8"
    LC_MEASUREMENT = "en_US.UTF-8"
    LC_IDENTIFICATION = "en_US.UTF-8"
    LC_ALL = en_US.UTF-8
    
  2. /Etc/locale.gen içinde istenen yerel ayarları etkinleştirin ve çalıştırın locale-gen

    $ cat /etc/locale.gen | grep UTF
    tr_TR.UTF-8 UTF-8
    nb_NO.UTF-8 UTF-8
    ru_RU.UTF-8 UTF-8
    
  3. İstenen yazı tipinin yüklenebildiğinden emin olun

    $ xset + fp / usr / share / fontlar / kiril
    $ fc-cache
    $ fc-list # kontrol edilecek

  4. "İlk terminal" i başlatmadan önce .Xdefaults (veya benzeri) ayarları uygulayın
    xrdb ~ / .Xdefaults


Bu kesinlikle yerel ayarla ilgilidir (soru hakkındaki güncellememe bakın), bu yüzden bu cevabı bana doğru yönde işaret ettiği için kabul ediyorum. Thnks.
sw1nn

Yerel ayarları ~ / .bash_profile (~ / .zprofile) içine koymak genellikle korkunç bir fikir değildir, ancak ~ / .xinitrc de çalışır.
Ярослав Рахматуллин

Eğer sanal bir terminalde oturum açarsanız (yani X olmadan) hepsi çalışır. Kabuk biti iyi çalışıyor, X'e özgü
sw1nn

Muhtemelen X (veya startxfce), bir profilden LANG & co'yu okumayan oturum açma dışı bir kabuktan başlatıldığından. Bash için, giriş yapmayan mermiler için malzeme ayarlamak üzere ~ / .bashrc kullanılabilir. Ama dediğim gibi, yerel ayarlarınızı ve diğer değişkenleri ~ / .xinitrc'de bırakmakla ilgili yanlış bir şey yok.
Ярослав Рахматуллин

Bu sorun, harf aralığının çok yakın olması nedeniyle tüm karakterleri de etkileyebilir. Örneğin, set URxvt.letterSpace: -10ve tüm karakterler kutular olarak görüntülenir
DavisDude

0

Benim için urxvt'deki powerline glifleri ile ilgili bir problemdi. Yerel ayarın ayarlanmasının, localectl set-locale LANG=en_AU.UTF-8en azından terminess powerline yazı tipi ile benim için sorunu çözdüğünü öğrendim (diğer yazı tiplerini denemedim)

urxvt powerline sembolleri

İşe yaramadı en_US.UTF-8, eminim çünkü onu yeniden üretebilirim ... şimdi bu garip ... ama şimdi çalışıyor.

kaynak

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.