Dizinlerde ve dosya adlarında Almanca noktaların kodlamasını düzeltin (ü = u╠ê vb.)


13

Alman umlauts (äüöÄÜÖß) için kodlama hatalarının olduğu birçok zip dosyam var. Hem dosyaadı.zip dosyasında hem de dahil olan dizinlerde ve dosyalarda görünürler:

  • Fünf = Fu╠ênf
  • Räuber = Ra╠êuber
  • Überfall = U╠êberfall

ve bunun gibi. Genellikle Linux kullanıyorum, ancak bu sorunlar nedeniyle bir Windows7 VM'yi de denedim, ancak aynı kodlama karmaşasına neden oluyor. Linux'ta, convmv ve detoks ile oynadım, ancak başarılı olamadım.

Kullandığımda

  • convmv -f iso-8859-1 -t utf8 - değiştirme --not -r *

"Zıplıyorum, zaten UTF-8" alıyorum.

Bunun hakkında bir fikrin var mı?


Hangi antika sistemi kullanıyorsunuz? Mevcut tüm Linux dağıtımları artık UTF-8 kullanıyor.
BatchyX

Bu bir dosya sistemi sorunu olabilir mi? Belki UTF'ye monte edilmedi?
terdon

Linux Mint 13 kullanıyorum (Kernel 3.2.0-23 ile Ubuntu 12.04 LTS tabanlı), bu yüzden bu antika değil. Daha önce yazdığım gibi, bu dosyaları bir Windows 7 VM'de de denedim. Ama elbette zip dosyalarını oluşturan kişinin ne kullandığını bilmiyorum.
elma şarabı

1
Bu kodlama bir çeşit DOS kodlaması gibi görünüyor. Genellikle UTF8 kodlamasıyla ilgili sorunları Alman ihalelerini kodlarsam, ä = ä veya Ü = Ãœ
elma şarabı

@cider try find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest Bu geçerli dir ileri gelen dosyaları bulmak ve her dosya ayrı ayrı convmv çalışır. Dosya adı nullterminated list olarak kodlanır.
Manwe

Yanıtlar:


2

"Zaten UTF-8" uyarısını almanızın nedeni, bu dizelerin gerçekten zaten UTF-8'de olmasıdır. "Ü" karakteri OSX-stilini 'u' ve ardından iki bayt "\ xCC" ve "\ x88" olarak kodlandı. Bu iki bayt birlikte \ u0308'in bir araya getirme diyafezi olan UTF-8 temsilini oluşturur.

Burada kod sayfası 437 listesine bakarsanız , \ xCC karakterini "╠" ve \ x88 karakterini "ê" olarak görürsünüz.

Bu karakter dizilerini görüntülemek için ne kullanırsanız kullanın onları UTF-8 olarak değil CP437 olarak yorumluyorsunuz.

UTF-8 terminalimde beklendiği gibi görüntülenen ruby ​​okursanız hızlı bir kanıt:

$ ruby -e 'puts "u\xCC\x88"' | iconv -f cp437 -t utf-8
ü
$ ruby -e 'puts "u\xCC\x88"'
ü

0

Benim tahminim dosyaları açmaya veya değiştirmeye çalıştığınız dosya sistemidir. FAT32 umlaut'larınızı sevmeyecek. Bu dosyaları flash sürücüden (veya sahip olduğunuzdan) kopyalamayı deneyin ve ardından dosya adlarının ne tür karakterler ürettiğini görmek için zip dosyasını açın.

Hem NTFS (Windows) hem de Ext4 (Mint) ad kodlamasında bir sorun yaşamamalıdır.

FAT32 sistemindeki zip dosyalarının ad kodlaması, uygun bir destekleyici dosya sistemine kopyalandığınızda büyük olasılıkla değişmeyecek veya düzeltilmeyecektir, ancak açıldığında alt dizinlerin iyi olması gerekir.


0

İlk olarak karakter kodlamanın cehennemin kendi bölümü olduğunu unutmayın. Windows dünyasında, UTF-8 ve M $ arasında uzun süre aptalca oynayan ve ISO-8859'da ısrarcı olan (kim tahmin etti). Yukarıda belirtildiği gibi, dosya sistemi ile neredeyse bir ilgisi vardır. Benim çözümüm teknik değil, uzun yıllardır benim için çalışan bir çözüm:

Dosya adları için kişisel tavsiyem her zaman aynı: Alfanümerik artı tire (-) ve alt çizgi (_) ile devam edin. Ululamayı ae, ue ve oe olarak yazın. Boşluk ve diğer özel karakterleri kullanmayın. İlk başta biraz rahatsız edici, ancak beklenmedik yerlerde size çok fazla acı kazandıracak.

Bir yan not olarak: evet bu bir tür kötü "kesmek" ama çapraz platformda çalışırsanız, genellikle son ortak paydaya geri dönmeniz gerekir. Karakter kodlaması gibi temel bir şeyin zor bir standart olacağını kabul edersiniz, ancak standartların elde edilmesi zor bir şey olduğu ortaya çıkar. Bu XKCD oldukça güzel bir şekilde özetliyor


Mac, Windows ve Linux (Syncthing aracılığıyla) arasında dosyaları senkronize etmeye çalıştığımda (ve başarısız olduğumda) dosya adlarındaki kodlama problemlerinden bıktım ve bıktım. Tavsiyenizi uyarlarım, ancak Türkçe'de alfasayısal yazı yazmak için uygun olmayan ç, ş, ı, ğ, ü, ö vardır. Bulut depolama kullanmaktan kaçınmak istiyorum, ancak bu sorun beni bunu yapmaya zorluyor.
Teo
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.