2012-11-08 17 views
8

Linux (Ubuntu) terminalindeki bazı dosyalarda isimlerde aksanlarla ilgili bir sorunum var. Örneğin,UTF-8 Dosya adı dönüşü yok linux terminalinde bulunamadı

$ ls dir/ 
criação.png 

Böylece, terminal bu dosyayı döndürür, dolayısıyla var olur. Gördüğünüz gibi

$ [ -f criação.png ] && echo "File Exist" || echo "Not Exist" 
Not Exist 

, "Not var": Artık dosya varsa bu basit komutla, bakalım. Şimdi, ben OSX aynı klasör ve dosya, o zaman aynı komutunu çalıştırın ve bu döndürür:

$ [ -f criação.png ] && echo "File Exist" || echo "Not Exist" 
File Exist 

Biraz yaklaşık yerel biliyorum:

linux üzerinde
$ locale 
LANG=en_US.UTF-8 
LANGUAGE= 
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= 

, " Varolmayan ", OSX'de" Dosya Var "... Birisi bunu düzeltmeyi biliyor mu?

Belki bu yardımcı olabilir:
http://nedbatchelder.com/blog/201106/filenames_with_accents.html
http://www.ruby-forum.com/topic/279105

UPDATE - Çözüm

Sonunda bu sorun için bir çözüm buldular.

cd dir/ 
convmv -r -i -f utf8 -t utf8 --nfc --notest . 

Kaynak: nedenlerinden http://blog.hbis.fr/2010/08/30/macox-utf8_filenames_normalization/

+0

Sorunum da nginx ile. Ör: '2012/11/08 17:05:34 [hata] 12102 # 0: * 128 açık()"/usr/share/nginx/www/wp-content/uploads/2012/09/celular-inclusão- digital.png "başarısız (2: Böyle bir dosya veya dizin yok), istemci: 66.249.76.145, sunucu: site.com, istek:" GET/wp-content/uploads/2012/09/celular-inclus% C3% A3o- digital.png HTTP/1.1 ", host:" site.com "' – mateus007

+1

Çözüm doğrudur (MacOS, NFD'yi kullanır, ancak hemen hemen her şey, MacOS söz konusu olduğunda uyumluluk sorunlarına neden olan NFC kullanır), ancak bir yanıt olarak göndermelisiniz . Cevabınız kabul ettiğinizden daha doğru! – Celada

+0

'convmv -r -f iso8859-1 -t utf8 --nfc --notest .' Dosyalamlarımı Windows'tan Linux'a SFTP tarafından yüklenen aksanlı olarak düzeltir. –

cevap

1

Bir dosya adı olabilir farklı bir unicode normalleşme formu kullanır Sen NFC için NFD dosyalarınızı yeniden adlandırmak gerekir burada tüm dosyaları düzeltmek için komut Harfleri birleştiren karakterleri, adı yazmak için kullandığınızdan daha fazla. Bakınız Unicode Equivalence.

+0

Evet, bazı komutları denedim, sonra yanlışlıkla "işe yaramaz" bir iş buldu: b mv criac <0327> a <0303> o.png criação.png' Şimdi dosya var. NFC e NFD hakkında bir şey mi – mateus007