Discussione:
[newbie] problema date e lettere accentate
(troppo vecchio per rispondere)
Marcoxxx
2007-09-30 09:48:01 UTC
Permalink
Premetto che sono ignorante sull'argomento e non sono nemmeno
sicuro che il problema sia di php. Se non lo e' chiedo scusa, ma
magari qualcuno puo' suggerirmi dove chiedere.

Sono alle prese con php (per la prima volta nella vita)
da circa un paio di giorni e gia' ho un problema...
Ho provato a lurkare nel ng ma non ho trovato soluzione al problema.

Dunque... il problema e' il seguente. Ho installato Apache 2.2 e PHP 5.2.4
sul mio portatile (Windows XP Pro, in italiano). Volevo provare a
visualizzare le date in Italiano e, seguendo il manuale, ho provato ad
usare setlocale passando NULL come secondo parametro. In pratica il codice
della
linea php e' il
seguente:

<?php setlocale(LC_TIME, NULL); echo strftime("%A %d %B %Y", mktime(0, 0,
0, 12, 22, 1978)); ?>

Quello che viene visualizzato e' si' la data in italiano, ma la i accentata
di venerdi' non viene visualizzata correttamente (al suo posto si vede
una specie di punto interrogativo con Firefox, mentre si vede una specie
di ideogramma cinese con IE). Ho provato anche a specificare il charset
con il tag <meta> nella pagina html ma non cambia niente.

Qualcuno ha qualche idea su come si risolve il problema ?

Grazie in anticipo,

Ciao,
Marco.
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
David Paleino
2007-09-30 10:04:54 UTC
Permalink
Il giorno Sun, 30 Sep 2007 11:48:01 +0200
Post by Marcoxxx
...
<?php setlocale(LC_TIME, NULL); echo strftime("%A %d %B %Y", mktime(0, 0,
0, 12, 22, 1978)); ?>
Usa setlocale(LC_TIME, "it_IT") :)

Il parametro impostato a NULL ti imposta il charset su UTF-8, che Windows
_odia_.

Ecco il risultato sulla mia Debian (io ho il charset UTF-8, quindi il
problema è al contrario):

$ cat date.php
#!/usr/bin/php
<?php
// charset UTF-8
setlocale(LC_TIME, NULL);

echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978))."\n";
?>
$ ./date.php
venerdì 22 dicembre 1978
$

Se, invece, imposto it_IT:

$ cat date.php
#!/usr/bin/php
<?php
// charset ISO-8859-15
setlocale(LC_TIME, "it_IT");

echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978))."\n";
?>
$ ./date.php
venerd� 22 dicembre 1978
$

it_IT dovrebbe darti in automatico il charset ISO-8859-15. Per quanto ne so,
Windows utilizza anche un suo charset, Win-1252 (o una cosa del genere).
Potresti provare a impostare quello ;) (googla, perché non uso Windows da
almeno 5/6 anni)

Prima di tutto, però, prova ad utilizzare it_IT.
Post by Marcoxxx
Ciao,
Marco.
Ciao,
David
--
. ''`. Debian maintainer | http://snipurl.com/qa_page/
: :' : Linuxer #334216 | http://www.hanskalabs.net/
`. `'` GPG: 1392B174 | http://www.debianizzati.org/
`- 2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174
Marcoxxx
2007-09-30 12:54:08 UTC
Permalink
Post by David Paleino
Usa setlocale(LC_TIME, "it_IT") :)
Il parametro impostato a NULL ti imposta il charset su UTF-8, che Windows
_odia_.
Grazie delle informazioni. In realta' pare funzionare

solo con "ita_ITA" come secondo parametro e solo se inserisco nell'head
della pagina html il tag:

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


Ciao,
Marco.
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
David Paleino
2007-09-30 12:55:59 UTC
Permalink
Il giorno Sun, 30 Sep 2007 14:54:08 +0200
Post by Marcoxxx
Post by David Paleino
Usa setlocale(LC_TIME, "it_IT") :)
Il parametro impostato a NULL ti imposta il charset su UTF-8, che Windows
_odia_.
Grazie delle informazioni. In realta' pare funzionare
solo con "ita_ITA" come secondo parametro
Che io sappia, ita_ITA non esiste. Puoi provare:

it_IT
it_IT.ISO-8859-1
it_IT.ISO-8859-15
it_IT.UTF-8

Queste sono le combinazioni "valide" (oltre a quelle it_CH.*). Dato quello che
hai inserito nel <meta>, ti suggerirei la seconda, provando con e senza il
<meta>.
Post by Marcoxxx
Ciao,
Marco.
Ciao,
David
--
. ''`. Debian maintainer | http://snipurl.com/qa_page/
: :' : Linuxer #334216 | http://www.hanskalabs.net/
`. `'` GPG: 1392B174 | http://www.debianizzati.org/
`- 2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174
Alessandro Pellizzari
2007-10-01 13:32:32 UTC
Permalink
Post by Marcoxxx
Grazie delle informazioni. In realta' pare funzionare
solo con "ita_ITA" come secondo parametro
Purtroppo esiste eccome. Naturalmente solo su Windows, che usa i
charset a modo suo (come al solito).

La tua soluzione e` corretta, volevo solo aggiungere che, oltre che
con <meta>, conviene sempre specificare il charset anche con header(),
perche` alcuni browser ignorano il <meta> quando il webserver gli passa
un charset diverso. Con header() si forza il webserver a passare il
charset che si vuole.

Bye.
David Paleino
2007-10-01 15:19:39 UTC
Permalink
Il giorno 1 Oct 2007 13:32:32 GMT
Post by Alessandro Pellizzari
Purtroppo esiste eccome. Naturalmente solo su Windows, che usa i
charset a modo suo (come al solito).
Bella mossa questa... bah.
Post by Alessandro Pellizzari
La tua soluzione e` corretta, volevo solo aggiungere che, oltre che
con <meta>, conviene sempre specificare il charset anche con header(),
perche` alcuni browser ignorano il <meta> quando il webserver gli passa
un charset diverso. Con header() si forza il webserver a passare il
charset che si vuole.
Dimenticato a proporlo :P
Post by Alessandro Pellizzari
Bye.
Ciao (e grazie per l'appunto, ora lo ricorderò sempre),
David
--
. ''`. Debian maintainer | http://snipurl.com/qa_page/
: :' : Linuxer #334216 | http://www.hanskalabs.net/
`. `'` GPG: 1392B174 | http://www.debianizzati.org/
`- 2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174
Continua a leggere su narkive:
Loading...