problema di codifica del nome file


9

Ricevo un file con un nome faroese e sto provando a salvarlo in uno script PHP:

2010_08_Útflutningur.xls

In Ubuntu 10.04 LTS lo sta salvando come:

2010_08_�tflutningur.xls (invalid encoding)

Ho installato ed eseguito utf8-migration-tool, ma senza alcun effetto.

È un errore di Ubuntu che posso correggere o devo solo rinunciare e modificare il nome in php?

Esiste un documento che indica qual è il set di caratteri accettabile per un nome file in Ubuntu o quali sono le specifiche di codifica?

Grazie


Come stai ricevendo e salvando il file tramite PHP? (Che aspetto ha il codice?)
Kees Cook,

Lo stavo analizzando da un sistema di posta elettronica. Il codice è complesso :)
Elzo Valugi,

C'è una domanda e risposta simile con uno script per riparare i nomi di file non funzionanti.
lumbric

Risposte:


5

Sembra un problema di codifica. Sfortunatamente, PHP ha bisogno di un po 'di mano quando si tratta di codifiche, perché le sue stringhe sono a byte singolo per impostazione predefinita. Se stai creando il nome file all'interno di PHP, utf8_encode()dovrebbe essere utile; notare, tuttavia, che presuppone la codifica ISO-8859-1 per l'input.

D'altra parte, se si utilizza il nome file inviato da un client, forse è possibile richiedere al client di eseguire la codifica. Ciò viene fatto con l' accept-charsetattributo del <form>tag e / o impostando il set di caratteri della pagina su cui si trova il modulo. Alcuni client possono utilizzare l'uno o l'altro, quindi per ottenere i migliori risultati utilizzare UTF-8 per ciascuno.


7

Di default Ubuntu utilizza UTF-8 per i nomi dei file. La maggior parte delle distro linux moderne e molti altri sistemi operativi lo fanno (Windows / NTFS è l'eccezione più nota con UTF-16).

Per correggere i file che hanno nomi con una codifica errata come quella che mostri, puoi provare a utilizzare nautilus-filename-repairer

sudo apt-get install nautilus-filename-repairer

È possibile utilizzare le iconvfunzioni PHP per convertire stringhe (nomi file) da una codifica all'altra. Ovviamente ciò richiede che tu sappia in quale codifica si trovano per cominciare.

Per ottenere nomi di file codificati correttamente dal client, puoi provare la tecnica spiegata da eswald.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.