Problemi lettere accentate e apostrofo nella lettura di un file

Ciao a tutti,

devo leggere dei dati da un file di testo.

All'inizio tutti i caratteri strani (lettere con l'accento) venivano visualizzati in modo sbagliato.

Poi ho provato a convertire il testo con la funzione utf8_encode() e adesso tutto si visualizza correttamente tranne gli apostrofi (apici singoli) che spariscono del tutto.

Ad esempio: "storia dell'arte" si visualizza "storia dellarte".

Ho visto che la cosa non dipende dal metodo di visualizzazione perchè ho provato con echo nel browser ma anche a salvare i dati in file di testo, e l'apice manca sempre.

Qualcuno sa come potrei risolvere??

Grazie in anticipo

inviato 8 anni fa
manerg
X 0 X

Rettifico: nel file di testo ci sono due tipi di apici.

Il primo (  '  ) non dà nessun problema, anche dopo la codifica, mentre il secondo (    )  è quello che non viene visualizzato. Forse esso non corrisponde a niente in UTF-8 e così non viene codificato.

Il problema comunque resta, perchè tali caratteri dovrebbero essere visualizzati come apici.

Sapete aiutarmi?

risposto 8 anni fa
manerg
X 0 X

Il problema dei caratteri "speciali" è piuttosto complicato perché dipende da come questi sono stati codificati nel file sorgente e da come questi saranno mostrati al browser.

La prima cosa verificare è il set di caratteri con cui viene costruita la pagina web iviata al browser. questo set di caratteri viene specificato sia inviando un header speciale:

header('Content-Type: text/html; charset=utf-8');

Inoltre nel file HTML viene inserito un meta-tag:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Come avrai notato, in entrambi i casi ho specificato come set di caratteri l'UTF-8. In questo modo il browser saprà correttamente interpretare e visualizzare i caratteri.

Ovviamente dovremo inviare solo del testo codificato in UTF-8. Questo significa che o tutto ciò che inviamo al broser è già salvato in file con codifica UTF-8 oppure deve essere codificato in questo set di caratteri prima che venga inviato.

La funzione utf8_encode() codifica un testo da ISO-8859-1 (latin1) a UTF-8. E quindi importante che il testo originale sia in ISO-8859-1 affiche la codifica funzioni, altrimenti utf8_encode() commetterà degli errori.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

sul database potremmo salvare i dati in utf-8?

inoltre, specificando il set di caratteri da inviare al browser, influenzerà anche la codifica dei dati inseriti nelle form?

grazie

risposto 8 anni fa
larchitetto
X 0 X

Se vuoi usare l'UTF-8 devi salvare i testi in UTF-8 nel database.

Nelle form l'utente potrà inserire tutti i caratteri dell'UTF-8. E' possibile specificare nel tag form l'attributo "accept-charset" ma non conosco l'effettiva utilità.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda