Salve,

è ormai qualche anno che realizzo siti web e devo dire che un certo grado di apprendimendo l'ho conseguito (da autodidatta) riuscendo a creare accoppiate (x)html + css + php + mysql con sufficienti/discrete funzionalità.

Ovviamente il web evolve, ed anche velocemente, così come evolvono i linguaggi. Da quanto ho capito è stato introddoto anche l'HTML 5 che prevede dei "tags" propri tipo <header></header> che io non uso e non ho mai usato.
Ma la cosa che mi lascia più perplesso (motivo del mio post) è che, spulciando nei sorgenti dei vari siti web, la maggior parte utilizzano il meta tag:

codice:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Io, invece, ho sempre utilizzato l'"intestazione":

codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Titolo della pagina</title>
<meta name="description" content="Descrizione pagina" />
<!-- Eventuali altri meta -->
</head>

<body>
bla bla
che prevede il Doctype indicato (mentre spesso vedo dichiarato quello semplificato <!DOCTYPE html>) e, soprattutto, il meta tag:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

In merito alla creazione delle pagine, faccio rigorosamente fede a validator.w3.org e per quanto riguarda le lettere accentuate, sostituisco loro la loro entità:

à ==> &agrave;
è ==> &egrave;

ecc....

In merito all'inserimento dei dati nel database MySql, procedo con la funzione "addslashes" lasciando le lettere accentuate come sono. Ad esempio, inserisco nella relativa riga di una tabella:

codice:
addslashes("Oggi la mia città è soleggiata")
e NON:

codice:
addslashes("Oggi la mia citt&agrave; &egrave soleggiata")
mentre quando la stampo a video, prelevandola dal database, uso la seguente procedura:

codice:
htmlentities((stripslashes("Oggi la mia città è soleggiata"))

Ora però mi sono accorto, dentro PhpMyAdmin, che di default il Charset è utf-8.....


Insomma, la mia domanda è se posso continuare a fare siti come ho proceduto fino adesso utilizzando set di caratteri iso-8859-1 (cioè che non diventeranno a breve obsoleti)??

E se tale set va bene anche per i dispositi mobili ???

Ho letto che il set di caratteri utf-8 serve per rappresentare caratteri speciali tipo in lingua cinese che non sono certamente presenti nè nell'italiano, nè nell'inglese, nè nel francese, .... E allora non capisco perchè siti in italiano o, al massimo, bilingue (italiano ed inglese), devono utilizzare utf-8 ???

Oltretutto in molti siti si vedono rappresentati degli sgorbi solo perchè hanno sostituito, nell'head, <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> con <meta http-equiv="Content-Type" content="text/html; charset=iso-utf-8" /> e non capisco perchè lo facciano....

Inoltre, nel codice php, io NON ho mai utilizzato l'header:

codice:
header("Content-Type: text/html; charset=iso-8859-1");
ma solo la dichiarazione tramite meta tag; mentre ho provato ad inserire:

codice:
header("Content-Type: text/html; charset=iso-utf-8");
ricevendo uno strano errore dovuto al "BOM della codifica UFT-8" ????? Poi ho capito che ciò è dovuto al fatto che anche il file col quale si lavora deve essere salvato con la codifica UTF-8 e non con la codifica ANSI.... Insomma, tutte queste complicazioni solo per fare un sito in italiano o, al massimo, in inglese, che non hanno bisogno (a quanto ho capito io) della codifica UTF-8.


Se qualcuno può spiegarmi il perchè lo si fa e se posso continuare come ho sempre proceduto io, gli sarei estremamente grato.

Grazie