Bir zip arşivi oluşturmak için php ZipArchive sınıfını kullanıyorum. Arşivdeki dosyanın ismini ayarlamak için addFile yönteminin ikinci parametresini kullanıyorum (diskteki gerçek dosya farklı bir ada sahip olduğundan). Bazı isimler fransız aksan içermelidir (& eacute; gibi). Arşivi indirdiğimde, aksanlar dosya adında doğru şekilde gösterilmiyor. Dosya adları için hangi kodlamayı kullanmalıyım? (uygulama UTF-8 kullanır)ZipArchive, oluşturulan arşiv içindeki dosya isimlerini saklamak için hangi kodlamayı kullanır?
cevap
Zip dosyalarında belirtilen bir kodlama yoktur; Arşiv aracı, kullanılan kodlamayı tahmin etmeli (veya üstlenmelidir). Önce CP1252'yi dene, sonra oradan git.
Çalışmıyor. ISO-8859-1, CP1252 ve CP850'yi sorunsuz olarak denedim – matei
Bir dosya adının bayt dizisi neye benziyor ve metinde olması gereken şey nedir? –
DOS kodlamasını kullan. Dosya adlarımda kiril alfabesi karakterleri var, bu yüzden dosya adlarını (Windows) ile cp866
(DOS) arasında kodlayarak $zip->addFile()
dosya adının dosya adına aktarıyorum.
Teşekkürler bir demet! Hangi kodlamaların kullanıldığını tam olarak nasıl anladınız? – YakovL
Bu php hatasıdır # 53948, bkz official bug report. (Benim için çalıştı)
Önerilen çözüm:
$zip->addFile($file, iconv("UTF-8", "CP852", $local_name));
- 1. httpclient hangi portu kullanır?
- 2. sorgusu filtrelemek için hangi desen kullanır? C#
- 3. nodeJS'de kriptolu bir ETag üretmek için hangi kodlamayı kullanmalıyım?
- 4. iOS anahtar zincirinde parolayı saklamak için hangi anahtarı kullanmalıyım?
- 5. Python ile dosya isimlerini bölme
- 6. PHP hangi sıralama algoritmasını kullanır?
- 7. IEEE 754 hangi dilleri kullanır?
- 8. Tumblr hangi şablon dilini kullanır?
- 9. Titanyum hangi JavaScript sürümünü kullanır?
- 10. SOAP hangi port numarasını kullanır?
- 11. MySQL hangi sıralama algoritmalarını kullanır?
- 12. Paint.setStrokeWidth() hangi ölçü birimini kullanır?
- 13. Keras flowFromDirectory dosya isimlerini yaratıldıkça alın
- 14. Uygulama verisini depolamak için hangi formatta/dosyada
- 15. ios içindeki SSIDDATA hangi
- 16. ASP.NET'te MachineKey için kullanır
- 17. Veritabanı dağıtım komut dosyası için kodlamayı değiştirme
- 18. NSURLCache hangi önbelleğe alma algoritmasını kullanır?
- 19. Perl hangi karma işlevini/algoritmasını kullanır?
- 20. Google Analytics API hangi saat dilimi kullanır?
- 21. Xcode 4'te "Arşiv için oluştur" yaptığımda, dosya nereye gidiyor?
- 22. .NET FormsAuthentication.Encrypt() yöntemi hangi şifreleme yöntemini kullanır?
- 23. ZipArchive sınıfını kullanamazsınız
- 24. Kodlamayı işaretlemek için Eclipse eklentisi
- 25. ZipArchive issue "Hata 21 - Bir Dizin" PHP
- 26. Kodlamayı algıla
- 27. Değişken oluşturulan dosya
- 28. Kodlamayı kesme
- 29. Powershell: Get-Content Pipeline için Kodlamayı Ayarlama
- 30. Linux'taki Dosya B içindeki Dosya A'nın içeriğine başvurabilir misiniz?
Zip oldukça eski biçimi, ve Unicode eskidir. Formatın daha eski 2007 öncesi sürümleri büyük olasılıkla standart genişletilmiş ascii kullanıyor. '07'den sonra, yeni özellikler UTF-8 için izin verdi. Oluşturduğunuz dosya sürümünü kontrol edin. –