UTF 8 dosya adları?


15

Unix tabanlı işletim sistemlerinde utf6 dosya adlarına izin verilebilir mi? Eğer öyleyse dosyayı diske yazmak için özel bir şey yapmam gerekiyor mu?

Ne yapmayı umduğumu açıklayayım. Uzak bir sisteme ftp yoluyla dosya aktaracak bir uygulama yazıyorum ancak dosya adı dinamik olarak potansiyel olarak utf8 içinde olabilir meta veri kümesi ile ayarlanır. Dosyayı diske unix / linux içinde yazmak için yapmam gereken bir şey olup olmadığını merak ediyorum.

Ayrıca bir takip olarak utf8 desteklemeyen bir sisteme bir utf 8 dosya adı yüklersem ne olacağını herkes biliyor mu?

Yanıtlar:


20

Unix / Linux'ta dosya adı, eğik çizgi veya NUL dışında herhangi bir baytlık dizidir. Eğik çizgi, yol bileşenlerini ayırır ve NUL, yol adını sonlandırır.

Böylece, dosya adları için istediğiniz kodlamayı kullanabilirsiniz. Dosya adlarında hangi karakterlerin olabileceği konusunda naif olmaları durumunda bazı uygulamalar bazı kodlamalarda sorun yaşayabilir - örneğin, kötü yazılmış kabuk komut dosyaları genellikle dosya adlarını boşluklarla işlemez.

Modern Unix / Linux ortamları UTF-8 kodlu dosya adlarını iyi işler.


12

Dahili olarak, çoğu dosya sistemi bayt depolar: dosya sistemi sürücüsü baytların ne anlama geldiğini umursamaz. Linux'taki genel dosya sistemi sürücüsü ve diğer birçok modern birleşim, başka bir bayt /ve null baytın bir dosya adında görünmesini sağlar.

Kodlama kısıtlamaları olabilecek dosya sistemleri vardır - genellikle FAT veya NTFS gibi yerel olmayan dosya sistemleri. Samba gibi bazı ağ dosya sistemleri, sunucu kodlaması ile istemci kodlaması arasında çeviri yapabilir; sunucu ve istemci yapılandırmalarının tutarlı olduğundan emin olmanız gerekir.

Geleneksel olarak, çoğu sistemde, bir dosya adı oluşturan baytlar UTF-8 olarak yorumlanır. Dosya adlarını karakter olarak yorumlayan bir uygulama, örneğin adları FTP üzerinden ileten bir uygulama çalıştırırsanız, dosya adlarınızın UTF-8'de kodlandığını söyleyecek şekilde bu uygulamayı yapılandırmanız gerekebilir. Ortamı LC_CTYPEbir UTF-8 yerel ayarına ayarlamak, en_US.UTF-8birçok komut satırı uygulaması için hile yapar.

Dosyaları UTF-8'i desteklemeyen bir sistemde depolarsanız önemli değil. Baytlar aynı kalacaktır. Dosya adlarını oluşturan karakterleri görüntüleyemezsiniz, ancak dosyaları UTF-8'i destekleyen bir sisteme geri kopyalarsanız, aynı baytlar yine de UTF-8 karakterleri olarak görüntülenir.

Kendi uygulamanızı yazıyorsanız, UTF-8'i dahili olarak ve mümkünse depolama ve iletim için kullanmak iyi bir fikirdir.

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.