Domanda

Abbiamo un CMS che ha diverse migliaia di text/html file.Si scopre che gli utenti hanno caricato di testo/file html utilizzando varie codifiche di caratteri (utf-8,utf-8 w BOM, windows 1252, iso-8859-1).

Quando questi file vengono letti e scritti per la risposta il nostro CMS framework forze di un charset=UTF-8 sulla risposta del content-type attributo.

A causa di questo, qualsiasi non UTF-8 content viene visualizzato all'utente con alterati i caratteri (?, diamanti neri, etc.quando non c'è la corretta traduzione di caratteri da "nativi" char codifica UTF-8).Inoltre, non c'è metadati collegati a questi documenti che indicano il set di caratteri - per Quanto ne so, l'unico modo per raccontare ciò che set di caratteri che sono è quello di guardare a loro, in un testo di applicazione di rendering (Firefox,Notepadd++,etc.) e di "guardare" il contenuto per vedere se si "guarda" a destra.

Qualcuno sa come automatico/in modo intelligente la conversione di file sconosciuti con la codifica UTF-8?Ho letto che questo può essere realizzato con la modellazione statistica, ma questo è quello che sopra la mia testa.

Pensieri sul modo migliore di affrontare il problema?

Grazie

È stato utile?

Soluzione

È possibile utilizzare ICU4J s CharsetDetector

Altri suggerimenti

Tenta di decodificare, come UTF-8.Se questo non funziona, quindi cercare \x92, e decodificare come CP1252, se trovato.In caso contrario, decodificare come Latin-1.

In generale, non c'è modo di dire.La sequenza di byte 63 61 66 C3 A9 è altrettanto valido come "cafe" in windows-1252, il "caf├⌐" in IBM437, o "caffè" UTF-8.L'ultimo è statisticamente più probabile, però.

Se non si vuole affrontare con metodi statistici, un approccio che funziona la maggior parte del tempo è quello di assumere che qualcosa che assomiglia a UTF-8, e che tutto il resto è in windows-1252.

O se UTF-16 è una possibilità, cercare FE FF o FF FE all'inizio del file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top