2010-07-09 19 views
5

So che il file UTF ha una distinta componenti per determinare la codifica, ma per quanto riguarda un'altra codifica che ha non ha idea di come indovinare quella codifica.come determinare la codifica del testo

Sono un nuovo programmatore java. Ho scritto codice per indovinare la codifica UTF usando BOM UTF. ma ho problemi con altre codifiche. Come li indovino.

Chiunque può aiutarmi? grazie in anticipo.

risposta

0

La risposta breve è: non è possibile.

Anche in UTF-8, il BOM è completamente opzionale e si consiglia spesso di non utilizzarlo poiché molte app non gestiscono correttamente e semplicemente lo visualizzano come se fosse un carattere stampabile. Lo scopo originale dei Byte Order Markers era quello di rivelare la endianità dei file UTF-16.

Detto questo, la maggior parte delle app che gestiscono Unicode implementano una sorta di algoritmo di ipotesi. Leggi l'inizio del file e cerca certe firme.

0

Se non si conosce la codifica e non si dispone di indicatori (come una distinta materiali), non è sempre possibile "indovinare" con precisione la codifica. Esistono alcuni indicatori che possono darti suggerimenti.

Ad esempio, un file ISO-8859-1 non avrà (di solito) alcun carattere 0x00, tuttavia un file UTF-16 ne ha molti.

La soluzione più comune è consentire all'utente di selezionare la codifica se non è possibile rilevarla.

+1

Un file UTF-16 contenente testo cinese in realtà non ha molti byte 0x00. –

4

Questa domanda è una copia di severalpreviousones. Ci sono almeno due librerie per Java che tentano di indovinare la codifica (anche se tieni presente che non c'è modo di indovinare giusto il 100% delle volte).

Naturalmente, se si conosce la codifica sarà solo uno dei tre o quattro opzioni, potrebbe essere in grado scrivere un algoritmo di induzione più accurato.

+0

+1 per trovare così tanti duplicati. –

Problemi correlati