I have moved my Drupal site into new server. Unluckily now all my file links containing polish letters in names are broken.
I have looked threw the script/database/file system to find out what is wrong and found the following:
/sites/default/files/Baranowska_Badania%20naukowe%20i%20testowanie%20nowych%20lek%C3%B3w%20na%20ludziach%20i%20zwierz%C4%99tach-aspekt%20prawny%20i%20etyczny_0.pdf
http://ppes.mage.pl/sites/default/files/Baranowska_Badania%20naukowe%20i%20testowanie%20nowych%20lekow%20na%20ludziach%20i%20zwierzetach-aspekt%20prawny%20i%20etyczny_0.pdf
public://Baranowska_Badania naukowe i testowanie nowych leków na ludziach i zwierzętach-aspekt prawny i etyczny_0.pdf
As you may see the problem is with link encoding. File names in SQL contain polish letters when real file names on linux system does not.
I would like to ask you whether there is any easy way to solve this out or the only way is to manually replace all polish chars in database with their respective non-polish equivalents (eg. "ę" => "e" ; "ó" => "o")?
At the end I executed the following queries:
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ą́', 'a');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ę', 'e');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ż', 'z');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ź', 'z');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ó', 'o');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ś', 's');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ć', 'c');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'Ś', 'S');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'Ź', 'Z');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'Ż', 'Z');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'Ń', 'N');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ń', 'n');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'Ł', 'L');
UPDATE file_managed SET `filename` = REPLACE(`filename`, 'ł', 'l');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'Ł', 'L');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ł', 'l');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ą́', 'a');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ę', 'e');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ż', 'z');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ź', 'z');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ó', 'o');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ś', 's');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ć', 'c');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'Ś', 'S');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'Ż', 'Z');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'Ź', 'Z');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'Ń', 'N');
UPDATE file_managed SET `uri` = REPLACE(`uri`, 'ń', 'n');