Windows 7'de bile “dir” yapabilir ve unicode karakterleri olan dosya adlarını görebilir misiniz?


5

Bu biraz soru ile ilgili

Windows 7'de, dir veya ağaç unicode karakterler gösteremiyor, hatta cmd / U ile cmd başlıyor

Windows 7'de bile, bir dosyaya girmek için unicode alabilmemin tek yolunun ...

> cmd /U
> dir /B > files.txt

Not Defteri'nde açıp "Farklı Kaydet" i denediğimde dosya "Unicode" da olacak ve eğer dir /B > files.htmlHTML dosyasını firefox'ta açacaksam UTF-16 (veya UTF-16 LE) Kodlamasını kullanarak gösterebilir.

ancak, bir dosyaya gitmek yerine ekranda görmek istersem, bu imkansızdır. Bunu gerçekleştirmenin bir yolu var mı? Muhtemelen bir şekilde cmd'ye yazdırılamayan karakterleri "?" Olarak göstermemesini söyleme

Güncelleme: cmd.exe, pencerelerde cygwin'in bash ve PowerShell'i denedim. Onlar aynı. "Özellikler -> Yazı Tipi" ni Consolas veya Lucida Console olarak değiştirmem dışında, bazı gelişmeler var - şimdi soru işareti değil, içinde bir soru işareti bulunan kare kenarlık ya da kare var.

Mac OS X ile daha pahalı olan Mac bilgisayarlar bunu yapabilir. Ücretsiz Ubuntu da yapabilir.

Yanıtlar:


5

Bu çok eski bir soru, ancak burada verilen cevapların hepsi yanlıştır.

Unicode çıktısını Windows komut satırında (CMD.exe) asla görmeyeceksiniz. Bunun nedeni, CMD'nin Unicode gösterememesidir. Bununla birlikte, DBCS'yi (Çift Baytlık Karakter Kümesi) görüntüleyebilir.

Örneğin Japonca çıkışını görmek istiyorsanız , Sistem Yerel Ayarınızı Japonca olarak değiştirmeli ve yeniden başlatmalısınız. Ardından, komut satırında Japonca DBCS (yani Shift-JIS) karakterlerini görebilirsiniz. Windows, Japonca Shift-JIS, Basitleştirilmiş Çince, Korece ve Geleneksel Çince "Big5" DBCS kod sayfalarını destekler.

Bu arada, UTF-16'yı (hatalı bir şekilde Microsoft tarafından "Unicode" ile birlikte kullanıldığında kullanılır) bir dosyaya yönlendirebilir, ardından bu dosyayı Not Defteri'nde açabilir ve Unicode karakterlerini görüntüleyebilirsiniz. Ayrıca, metinleri CMD.exe'den işaretleyip kopyalayıp Not Defteri'ne yapıştırabilir ve Unicode karakterlerini görebilirsiniz. Başka bir deyişle, CMD Unicode'u destekler, ancak Unicode'u görüntülemez .

Bu blog yazısında daha fazla bilgi bulabilirsiniz .


1

Kullanıcı adınıza dayanarak, aslen Asya dilleriyle çalıştığınızdan şüpheleniyorum.

Windows araçları normal olarak unicode modunda çalışır (çıktıyı dirbir dosyaya aktararak ve o dosyayı bir editörle açarak gördüm ):

  1. araç işini yapar
  2. unicode karakterler çıkarır
  3. başka bir program bu çıktıyı alır ve görüntülemek zorundadır.

Ekrandaki herhangi bir karakteri görüntülemek için 3. adımdaki program verilen bayt sırasına uygun glif aramak zorundadır. örnek:

  • 0x65 'a' her yazı tipinde farklı bir glifle eşleşir (bu nedenle 'a' yazı tipinden yazı tipine farklı görünür)

  • 0x937 'Ω' (Yunanca 'omega') her yazı tipinde de farklı bir glifle eşleşir

bu eşleme yalnızca yazı tipi verilen bayt sırası için bir glif içeriyorsa çalışır. Aksi halde görsel sonuç farklılık gösterir, bazen '?', bazen elmaslar vb.

tekrar: dirbazen tamamen ASCII aralığında olan, bazen de unicode aralığında olan (hangi dosya adlarını bulacağına bağlı olarak) baytezler üretir. bu dizileri aslında byteesences oluşturma sorumlusu olan başka bir programa gönderir. Bu dizileri görüntüleyebilmek için bu program dizisini bir glifle eşlemek zorundadır. Bunu yapmak için, glif için bir fontta arama yapması gerekir. fontun, verilen sekans için bir glif içermemesi durumunda, program, örneğin, üretilen byte sekansını görüntüleyemez dir.

bu nedenle, sorununun çözümü (pencerelerin 'konsolunda / terminalinde herhangi bir unicode karakterini görmek): programda, içinde verilen herhangi bir unicode baytının (neredeyse) her (g) harfini (neredeyse) içeren bir font kullanın.


1
hm, ancak cmd, cygwin bash ve PowerShell hepsi 3 fontla sınırlıdır: Raster fontları, Lucida Console ve Consolas ... aslında Windows, geçerli fontla hiçbir şey gösteremediğinde genellikle unicode fontlara geri döner. .. ayrıca, çıktıyı yönlendiriyorsam dir > file.txt, ekranda "kare kutu" olmasına rağmen hala dosyadaki soru işareti gibi .
nopole

@Jian Lin: evet, ama bu esasen bu glifleri içeren bir font sağlamak için SİZİN sorunu. ve pencereler, içinde "bazı" unicode glifleri içeren "bazı" fontlara geri dönseler bile ... bu, bazı asil gliflerinizi görüntülemek için yeterli değildir (asil glifleriyle sorun yaşarsınız, değil mi?).
akira

Bazı web sitelerine göre, "Liberatör Uni Duo" (hatta "sabit" için) en iyi yazı gibi görünüyor ascendercorp.de/fonts/multilingual/ascender-uni ama belki daha iyi bir şey / ucuz bulmak en.wikipedia.org/wiki/ Unicode_typefaces
akira

@ akira, Windows 7'de Unicode glif kümesinin tamamını görüntüleyebilecek birçok font var. Ancak (1) Cmd penceresi, hiçbirini seçmenize izin vermez. (2) Pencereler veya uygulama Lucida Sans Unicode gibi unicode gösterebilen yazı tipine geri döndüğünde, Çince karakterlerin çoğunu görüntüleyebilir.
nopole

1
@ akira: İyi cevap, ben sadece "bayt dizileri" yerine "16-bit dizeleri" veya "UTF-16 dizeleri" ile değiştiririm, çünkü Windows dahili olarak kullanır.
Philipp

0

https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how

chcp 65001Kod sayfasını UTF8 olarak değiştirmek için kullanın ve Lucida Konsolunu kullanın.


hm ... hala çalışmayacak ... yazı tipi zaten Lucida Konsoluna ayarlanmışken cmd / U, chcp 65001, dir ve dir / B hala aynı.
nopole

1
Konsola daha fazla yazı tipi eklemeyi denemek isteyebilirsiniz: support.microsoft.com/kb/247815 ve blogs.msdn.com/b/oldnewthing/archive/2007/05/16/2659903.aspx ( sorun).
ta.speot.is

bunların tümü , metni oluşturmak için programa verdiğiniz yazı tiplerine bağlıdır. destek makalesini okuyun, içindeki iyi bilgi.
akira

1
@taspeotis: Windows konsolu, kod sayfası ayarından bağımsız olarak daima dahili olarak Unicode kullanır (ki bu modası geçmiş ve yalnızca geriye dönük uyumluluk için dahil edilmiştir). Bu gerçekten sadece bir yazı tipi sorunudur.
Philipp

Win 7'de bulunan yazı tiplerinden herhangi biri kullanılabilir mi? MingLiU, DFKai-SB gibi
nopole

0

Windows konsolu her zaman dahili olarak Unicode kullandığından kodlamalarla ilgisi yoktur. Karakterler sadece programlama ve Avrupa dilleri için tasarlanmış yazı tiplerinde mevcut değildir. Şu anda Windows'a erişimim yok, ancak Lucida Console yazı tipine geçtikten sonra Yunanca karakterler yazabileceğimi hatırlıyorum. DejaVu Sans Mono gibi bir font kullanmak işe yarayabilir.


rusça bir dosya adı oluşturdum ve cmd.exe glifleri lucida'ya geçtikten sonra doğru bir şekilde gösterdi. Asya yazı tipleri için OP'nin "daha iyi" ya da daha fazla "unicode complete sabit yazı tipi" seçmesi gerektiğini düşünüyorum (bu cevabı beğenmese bile :)).
akira

0

Tamam, bu PowerShell kullanarak bir çözümdür:

1) StartWindows 7'deki butona tıklayın
2) Şimdi, boş satırda PowerShell
3 yazınız)PowerShell ISE <- olduğuna dikkat ediniz.ISE

Şimdi, yaparsanız lsunicode karakterleri görebileceksiniz ...

4) Ayrıca kullanırsanız chcp 65001, programınız UTF-8 karakterleri yazdırıyorsa, bunlar da güzel bir şekilde görüntülenir.

Ayrıca ls > list.txt, ardından da type list.txtUnicode karakterlerinde içerik gösterilir.

tree hala unicode karakterleri göstermeyecek.

Ayrıca, PowerShell ISE içinde de cmd /U /C dir /Bçalışmayacaktır.

ls -R niyet.


lsPowershell aslında "Get-ChildItem" için sadece bir takma addır
KdgDev

ve sonra? Bana Get-ChildItemher gün komut satırında kullandığını söyleme ls. Örneğin, genellikle hidrojen dioksit yerine su içiyoruz.
nopole,
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.