Osservazioni preliminari:
-
sftp deve utilizzare UTF-8 come codifica del nome file (ad esempio, vedere qui come riferimento). Tuttavia, ci sono client e server che non seguono tale requisito e violano le specifiche, che potrebbero essere la causa del tuo problema.
-
Hai scritto:"Nota che ho commentato:AcceptEnv LANG LC_*. Secondo qui, ciò significa che il server non consentirà al client di passare variabili di ambiente locali."
Potrebbe esserci un malinteso su come funziona e a cosa serve. Ogni volta che due macchine comunicano, devono utilizzare gli stessi formati di dati. Ad esempio, supponiamo che VisualCron inserisca nomi di file codificati come ISO 8859-1 nel flusso di byte che invia al server Ubuntu, ma forzi il server Ubuntu a interpretare il flusso di byte in entrata (nome file) come se fosse codificato in UTF- 8. Questo non risolverà problemi, ma causare loro.
Detto questo:
In un primo momento proverei a scoprire dove sorge esattamente il problema. Presumo fortemente che tu abbia accesso SSH o anche accesso fisico (tastiera) al server Ubuntu. Allora
-
Controlla se la locale
en_US.UTF-8
è installato sul server Ubuntu. Tieni presente che basta impostareLC_
eLANG
le variabili di ambiente non installare una locale.Invece, dovresti installare una locale durante l'installazione del sistema operativo o qualcosa come
dpkg-reconfigure locales
(su debian - non conosco Ubuntu). -
Se utilizzi SSH, assicurati che il software del tuo terminale SSH (ad es. Putty) utilizzi la stessa codifica del server.
-
Quindi, il passaggio più cruciale:utilizzare il terminale SSH, manualmente crea un file con un nome problematico nella rispettiva directory in modo che il client sftp sul tuo laptop Windows possa vederlo.
Ad esempio, tornando alla tua domanda, potresti creare un file con nome
Liège.txt
nel tuo/tickets
cartella (touch /tickets/Liège.txt
). Sempre usando il tuo terminale SSH, ricontrolla attentamente che il nome del file appaia correttamente quando permetti a Ubuntu di elencare i file in quella directory (ls -al /tickets
). -
Ora usa il client sftp sul tuo laptop Windows e controlla se scarica correttamente il file appena creato.
Se funziona, significa che il tuo problema sorge quando VisualCron trasferisce i file sul server Ubuntu. Se non funziona, il problema è tra il tuo laptop Windows e il server Ubuntu.
In entrambi i casi, ci sono strumenti che possono aiutarti ad analizzare la situazione.
Ad esempio, puoi ottenere alcune informazioni giocando con convmv, che può convertire i nomi dei file da una codifica a un'altra. In particolare, puoi convertire la codifica dei tuoi nomi di file da UTF-8 a UTF-8 . Quando lo fai e sei sicuro che il nome del file sia già codificato in UTF-8, non deve cambiare durante la conversione.
Potresti anche voler dare un'occhiata a chardet, che è una libreria Python che cerca di indovinare la codifica ad es. nomi di file. Non sono un tipo Python, quindi non posso aiutarti con il codice sorgente. Secondo la risposta accettata a questa domanda, avresti una linea come chardet.detect(os.popen("ls yourfilename.txt").read())
nel tuo script Python, che produrrà la codifica più probabile insieme a una valutazione di affidabilità.
Per riassumere:
-
Assicurati che i nomi dei file sul tuo server Ubuntu veramente sono codificati in UTF-8, seguendo i passaggi sopra indicati e utilizzando gli strumenti sopra menzionati.
-
Una volta che sei assolutamente sicuro che i nomi dei file sul tuo server Ubuntu siano codificati in UTF-8, controlla se il tuo client sftp sul tuo laptop può scaricarli. In caso contrario, prova altri client finché non funziona.
-
Se hai scoperto che non tutti i nomi dei file sul server Ubuntu sono codificati in UTF-8, regola di conseguenza le impostazioni in VisualCron. Non conosco VisualCron e quindi non posso aiutarti.