Mac OS’ten Linux’a yüklenen dosyalarda Türkçe karakter ve Encoding problemi

Geçenlerde WordPress sitelerimden birini daha Laravel tabanlı bir yapıya aktardım. Ancak bu seferki süreç biraz zorluydu; optimize edilmemiş hâlde bulunan fotoğrafları dinamik bir şekilde, Laravel Spatie MediaLibrary kütüphanesini de kullanarak yeniden oluşturdum (responsive sürümleriyle birlikte).

Her şey yolundaydı ancak tüm dosyaları sunucuya yükledikten bir süre sonra fark ettim ki, isminde büyük İ veya yumuşak g, ç, ü gibi harfler, kısacası Türkçe karakter barındıran dosyalar sunucudan yüklenemiyordu.

İlk başta sorunun sunucu kaynaklı olduğunu düşündüm ancak yanıldığımı anlamam uzun sürmedi.

Dosyalar bir şekilde Linux’takinden farklı encode edilmişti ama nasıl

Lafı uzatmayayım, nihayetinde Mac OS’in UTF-8 encoding’inin “NFD” tipinde olduğunu, ancak tüm Linux dağıtımları dahil olmak üzere diğer alanlarda UTF-8'in “NFC” tipinin kullanıldığını öğrendim. Doğrusunu söylemek gerekirse bu ikisi arasında ne fark olduğunu da hâlen bilmiyorum.

En nihayetinde, bir bash scripti yazarak sunucuda bulunan dosyalarımın hepsinin encoding’ini düzelttim ve her şey tekrar beklenildiği gibi çalışmaya başladı.

Çalıştırdığım script’in içeriği şu:

Gerçekten saç baş yolduran bir problemi bir saatten kısa sürede çözmeyi başardığım için mutluyum ancak gelecekte de bu sorunla karşılaşacağımdan şüphem yok; o yüzden çözümü buraya not etmek ve hem gelecekteki kendimle, hem de sizlerle paylaşmak iyi bir fikir gibi gözüküyor.

Full Stack Developer | Technical co-founder of off2class.com | Founder of valizim.com | Ex contributor @PCnetDergisi

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store