2013-01-09 21 views
9

Ho creato un file con contenuto codificato UTF-8 (utilizzando PHP fputcsv).Notepad ++ può riconoscere la codifica?

Quando apro questo file in Notepad ++ - i caratteri sono errati (Notepad ++ inizia con la codifica ANSI).

Quando imposto Formato -> "Codifica in UTF-8" dal menu - tutto va bene.

Mi preoccupo, che Notepad ++ in grado di riconoscere la codifica in qualche modo, e forse qualcosa non va con il mio file creato con fputcsv? Primo byte o qualcosa del genere?

risposta

14

Rilevare automaticamente una codifica non è un'operazione che può essere eseguita con precisione. È essenziale che la codifica sia specificata esplicitamente. Può essere indovinato in alcuni casi, ma anche in questo caso non con certezza del 100%.

Questa documentazione (Encoding) spiega la situazione relativa a Notepad ++. Sottolineano inoltre che la difficoltà si pone soprattutto se il file non è stato salvato con un Byte Order Mark (BOM).

Dato che il file viene visualizzato correttamente dopo aver impostato manualmente la codifica, direi che non c'è niente di sbagliato in come si sta generando e salvando il file. L'unica cosa che puoi verificare è se una BOM viene salvata, il che potrebbe migliorare le possibilità che Notepad ++ sia in grado di rilevare automaticamente la codifica.

Vale la pena notare che, sebbene possa aiutare gli editor come Notepad ++ a identificare la codifica in modo più accurato, secondo il documento Unicode Standard, il BOM non è raccomandato.

+0

Esiste un modo per controllare il Byte Order Mark in PHP? – Kamil

+1

Temo di non essere una persona PHP, ma ho trovato questo che potrebbe aiutare: http://php.net/manual/en/function.utf8-encode.php#68211. Tieni presente che il BOM non è necessario (e infatti non è consigliato nel documento Unicode Standard) –

+0

Grazie a @chamila_c. Questo è tutto ciò che volevo sapere. – Kamil

6

È necessario controllare l'angolo in basso a destra della GUI di Notepad ++ per visualizzare la codifica effettiva in uso. Il problema non è quello specifico di Notepad ++ perché indovinare la giusta codifica è un grosso problema senza alcuna soluzione reale, quindi è meglio lasciare che l'utente decida qual è la codifica più appropriata in ogni singolo caso.

0

Quando si desidera riflettere la codifica del file di testo in un programma Java, è necessario considerare due thnigs: codifica e set di caratteri. Quando apri un file di testo, vedi la codifica nel menu "Codifica". Inoltre, guarda il punto del menu dei set di caratteri. Sotto "Europa orientale" troverai "ISO 8859-2" e sotto "Windows-1250" dell'Europa centrale. È possibile impostare la codifica corrispondente nel programma Java quando si cerca nella tabella: https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html Ad esempio, per il set di caratteri europeo Cenntral "Windows-1250" la tabella suggerisce la codifica Java "Cp1250". Imposta la codifica e vedrai correttamente i caratteri nel programma.

+0

A quale domanda stai rispondendo? La domanda reale non ha nulla a che fare con java. – Toto

+0

Rispondo alla domanda relativa alla codifica dei caratteri in Notepad ++. –

Problemi correlati