Qual è la migliore strategia per trasformare stringhe Unicode in nomi di file?

2

Ho un mucchio (migliaia) di risorse in un file RDF / XML. Sto scrivendo un certo sottoinsieme delle risorse per i file: un file per ciascuno e sto usando la proprietà del titolo della risorsa come nome del file. Tuttavia, i titoli sono articoli di ogni giorno, sito Web e post di blog, quindi contengono caratteri non sicuri per un URI (il passaggio necessario per la costruzione di un percorso file valido). Conosco il Jersey UriBuilder ma posso farlo t abbastanza farlo funzionare per i miei bisogni, come ho dettagliato in un diverso domanda su SO .

Alcune possibilità che ho considerato sono:

  • Poiché ogni risorsa dovrebbe avere anche un URL associato, potrei provare a utilizzare il nome del file sul server. Il lato negativo di questo è che a volte le persone non nominano il contenuto in modo logico e penso che il titolo di un articolo rifletta meglio il contenuto che sarà presente in ogni file di testo.
  • Costruisci una lista bianca di caratteri validi e analizza la stringa definendo le sostituzioni per caratteri non sicuri. Il lato negativo di questo è il risultato potrebbe essere altrettanto illeggibile della precedente soluzione perché presumibilmente i creatori di contenuti hanno attraversato un processo simile quando hanno posizionato i file sul loro server.
  • Scegli uno schema di denominazione più generico, inserisci il titolo nel file di testo insieme agli altri attributi e comunica al mio capo di conviverci.

Quindi la mia domanda qui è, quali metodi funzionano bene per gestire uno scenario in cui è necessario costruire nomi di file con stringhe con caratteri potenzialmente pericolosi? C'è una soluzione che soddisfa meglio i miei vincoli?

    
posta David Cowden 10.07.2012 - 16:50
fonte

2 risposte

4

Choose a more generic naming scheme, place the title in the text file along with the other attributes, and tell my boss to live with it.

Questa sarà la soluzione migliore, in quanto non solo devi gestire la codifica e la decodifica dei nomi dei file, devi gestire nomi di file che potrebbero essere troppo lunghi o non rispettare i limiti del tuo filesystem, a seconda della piattaforma.

Non c'è alcun vantaggio nell'avere nomi di file enormi e ora parzialmente codificati nel filesystem. Non ti faranno del bene come umano cercando di scavare attraverso di loro con ls . Se stai già salvando altri attributi, il title della risorsa è solo un altro attributo. La tua soluzione di archiviazione dovrebbe essere il modo in cui cerchi le cose, non il file system.

I titoli della risorsa e solo quei titoli, metadati, qualsiasi altra cosa inquinerà il tuo dominio. Mantieni insieme gli attributi, scopri come eseguire la ricerca nel testo completo nel tuo livello di archiviazione e utilizzalo, quindi puoi cercare tutti gli attributi in tutto il testo. Il filesystem non è un database generalizzato.

    
risposta data 17.07.2012 - 07:18
fonte
-2

Suggerirei di usare espressioni regolari per questo lavoro, puoi creare un'espressione regolare che corrisponda a tutti i caratteri validi come alfabeti, numeri e qualche carattere speciale (assicurati di usare tutte le corrispondenze e non solo la prima). In questo modo rimuoverai tutto il personaggio di uinsafe, ma questo ha il lato negativo se ti manchi un po 'di carattere sicuro nella tua espressione regolare.  Inoltre puoi sostituire i caratteri non sicuri che conosci per carattere sicuro come "@" (non sicuro se è pericoloso nel tuo caso) con "[AT]" in questo modo anche il significato del nome non andrà perso.

    
risposta data 17.07.2012 - 06:46
fonte

Leggi altre domande sui tag