Newsgroup: it.comp.www.php
Titolo: problemi caratteri accentati

scusate lo sfogo ma...ho avuto mille problemi con codifiche dei caratteri
fra database, script php, caratteri accentati che in un form vengono
visualizzati bene, e in un altro form in maniera diversa, e cosě via...ad
esempio nel DB vedo caratteri strani, e poi nel browser vedo il carattere
corretto......
io CHIEDO semplicemente di poter avere un DB che memorizzi per bene le
VOCALI ACCENTATE, e i form php che mi mostrino queste vocali in maniera
corretta!!!
utilizzo xampp 1.7.4 con la versione di MySQL 5.5.8, apache 2.2.17 e php
5.3.4
ecco le mie domande:
1 - quando creo il nuovo database (con phpmyadmin 5.0.7) che tipo di
Collation devo scegliere?
2 - quando creo il nuovo database (con phpmyadmin 5.0.7) che tipo di
Collation della connessione di MySQL devo scegliere?
3 - negli script php in testa, devo specificare qualcosa tipo: <!DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta
http-equiv="Content-Type" content="text/html; charset=UTF-8" /
non penso sia una cosa tanto complessa...anche se io ancora non ho trovato
una soluzione definitiva...
ciao e grazie
alessandro
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

http-equiv="Content-Type" content="text/html; charset=UTF-8" /
<?php
	Header('Content-Type: text/html; charset=UTF-8');
	print <<<HEADER
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
">
	<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
	<meta http-equiv="content-type" content="text/html;charset=utf-8"
/>
</head>
HEADER;
?>
E poi devi stare attento a modificare i file con degli editor UTF8.
Leonardo :set enc=utf8
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

grazie davvero, ora ci provo
ciao


 una soluzione definitiva...
La soluzione si chiama UTF8. Tutto deve parlare in UTF8.
Quando crei un DB devi assicurarti che il default sia UTF8. Quando definisci i
campi [var]char, devi assicurarti che siano UTF8. Puoi controllare con un bel
         SHOW CREATE TABLE pippo;
per controllare se la tabella pippo contiene qualche campo non-UTF8
Poi devi assicurarti che il tuo server HTTP parli UTF8. Questo non e'
fondamentale perche' tu potresti non avere il controllo della configurazione del
server, ma e' un comodo default.
A livello PHP dovresti fare due cose. Innanzi tutto prima di mandare in output
qualsiasi cosa dovresti settare un header http che dice che quello che segue e'
UTF8:
    header("Content-Type: text/html; charset=UTF-8");
questo fa un override di qls impostazioni dell'HTTP server, quindi se il
SysAdmin per cavoli suoi ti ha messo un altro default, tu lo aggiri in questo
modo. Di solito metti quella direttiva all'inizio del file di include che
includi in tutte le pagine.
In seconda istanza, negli header HTML ci ficchi un bel
echo "\n<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />";
che ribadisce il concetto espresso in precedenza. Repetita iuvant.
Adesso PHP parla tutto in UTF8, MySQL e' tutto in UTF8. Resta solo il dialogo
tra MySQL e PHP. Se usi l'interfaccia mysqli e' semplice:
$db = new mysqli($hst, $usr, $pw, $db);
$db->set_charset('UTF8');
// 
http://php.net/manual/en/function.mysql-set-charset.php
Et voila'.
Ricordati solo che alcune stringhe potrebbero usare piu' byte per rappresentare
un carattere e che potrebbero venirti utili le funzioni della libreria mbstring,
che deve essere abilitata in maniera specifica su PHP (deve farla il SysAdmin).
http://it.php.net/manual/en/book.mbstring.php
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Non bisogna mai regalare ad una donna qualcosa che non possa indossare
di sera.
    --Oscar Wilde

 E poi devi stare attento a modificare i file con degli editor UTF8.
grazie ad entrambi per le risposte; io come editor finora ho utilizzato
'Php designer 2007', va bene come editor UTF8? 
oppure conviene usare qualche altro editor? consigli?


oppure conviene usare qualche altro editor? consigli?
Non lo conosco. Uno dei test che ti conviene fare è questo:
1. Crei un file nuovo
2. Ci scrivi dentro "Città"
3. Salvi
4. Riapri e modifichi in "pippo"
5. Risalvi
Se a questo punto il file è lungo 5 byte, tutto bene. Se è lungo 6 o 7,
fa' il bravo e controlla di non aver aggiunto un "fine linea".
Se è lungo 8 o 9, dai fuoco all'editor. Ti ha piazzato un BOM dentro al
file, il che, in 6 webserver (e php) su 7, non dà problemi.
Sull'ottavo, in PHP, avrai inspiegabili errori di "cannot add headers -
output started at sarkozy.php line 1", e quella line 1 magari sembrera'
solo "<?php" (o "<?php\r*\n").
In realtà è "\xef\xbb\xec<?php" o qualcosa del genere. L'editor vede il
BOM, capisce, e te lo nasconde. Il php non capisce, e fa casino.
(Altro test. Al punto 3, controlla che il file sia lungo, IIRC, 6 byte,
oppure 7 o 8 se c'e' un ritorno carrello; che dovresti levare per avere
meno probabilità di confondere le acque... Se è lungo 5 la codifica NON
è UTF8, è un fetentissimo CP850 diolabbingloria, aka IBM. Pittoresco ma
letale per il funzionamento universale della pagina web [1]).
Leonardo
[1] sui browser troppo furbi (IE,FF), e i cretini di ogni età (IE6), e'
    possibile che funzioni lo stesso o perché il browser capisce, o per
    il fatto che comunque non sa fare altro. Poi, arriva il cliente con
    Chrome-with-no-autodetect, e SBRANG.



precisazione utf8_general_ci

 letale per il funzionamento universale della pagina web [1]).
questa non la ho capita!!


 fetentissimo CP850 diolabbingloria
AMEN!
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
If you're not part of the solution, you're part of the precipitate.

questa non la ho capita!!
Quando scrivi nel file, "Città", stai scrivendo 5 caratteri, ma in UTF8
quelli dovrebbero essere SEI byte:
	C	i	t	t	0xC3 0xA0
perciò, se il file è lungo CINQUE, significa che dentro c'e' scritto
	C	i	t	t	0xE0
che è la codifica ISO-8859-15 o win-1252, oppure
	C	i	t	t	0x85
che è la codifica CP850 di DOSsiana memoria.
Leonardo


che è la codifica CP850 di DOSsiana memoria.
La conseguenza è questa: tu scrivi, poniamo, nel PHP,
	print "Mi spiace, non è possibile bla bla";
e la pagina arriva all'utente con uno header UTF8, e nel flusso c'è quella
"è", ovvero un carattere 0xE0. Che in UTF8 non esiste.
Sicché l'utente vedrà un carattere nero fatto così "<?>".
A quel punto, per rimediare, o scrivi
	print utf8_encode("Mi spiace...");
oppure
	print "...non &egrave; possibile..."
...ma la meglio sarebbe usare un editor UTF8.


 ....ma la meglio sarebbe usare un editor UTF8.
sei stato chiarissimo!!! ho capito, per cui butterò quell'editor per
cercarne uno UTF8, ultimissima cosa:
Tu quale usi/consigli?
mi basterebbe uno molto semplice, free, dato che scrivo quasi tutto a
manina...
ciao e ancora grazie
alessandro


Tu quale usi/consigli?
Non oso dirlo, temo una guerra civile nel newsgroup. E di prendermi di
Neandertal per soprammercato.
Diciamo che non è Emacs e che non è precisamente visuale.


 Diciamo che non è Emacs e che non è precisamente visuale.
Anche tu ed?

 Diciamo che non è Emacs e che non è precisamente visuale.
Il mitico Vi ?
ciao
Mauro
p.s.
Per ma domanda di VedoNero io ti consiglio PsPad

 Neandertal per soprammercato.
vim rulez!
e scateniamo i mastini della guerra! ;)
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
The goal of science is to build better mousetraps.
The goal of nature is to build better mice.

Anche tu ed?
Sei matto? red! Non si è mai abbastanza sicuri.
(Okay, facevo chiasso. Vim).



Ce ne sono decine, per Windows puoi usare:
-vi/vim
-emacs
-SciTe
-gedit
-netbeans
-eclipse
...
Anche PHP Designer va bene, probabilmente devi solo impostare la 
codifica (vai nelle preferenze e cerca)

 (Okay, facevo chiasso. Vim).
Era facile, anche per me da CLI vim. Su OS X TextWrangler.


fatemi capire utilizzate vi/vim per interi progetti???
lo uso se devo fare al volo correzioni, lavorare in remoto ecc..
ma per i progetti con decine, centinaia di file, framework, db, css. 
html ecc. mi è più comodo un ide evoluto.
Ciao

 html ecc. mi è più comodo un ide evoluto.
Io non ho progetti complessi, ad ogni modo mi sembra difficile che un 
essere umano possa effettivamente modificare centinaia di file 
_contemporaneamente_, forse scrivendolo pensavi ad un file browser per 
tenere tutto un ramo di fs sotto controllo?
Vim ha un po' di tutto tra gli script [1], anche il supporto ad alcuni 
framework PHP. Non sto dicendo che debba piacere per forza. 
[1] 
http://www.vim.org/scripts/script_search_results.php

 [1] 
http://www.vim.org/scripts/script_search_results.php
non lo sapevo

 intergacce js)
Ci sono plugin per gestire i buffer con un menu popup e altri per il 
filebrowsing. In particolare li trovai in un blog che parlava di come 
integrare in Vim le caratteristiche interessanti di Textmate, ma non ho 
più il link. Da questo punto di vista si parlava bene anche di Gedit.

 più il link. Da questo punto di vista si parlava bene anche di Gedit.
Scusate ma... l'OP parlava di un editor PHP cippalippa 2007 che dubito
sia su Linux.
Su Windows "leggero, free, ..." = PSPad e non credo che questa
affermazione possa scatenare una guerra di religione sugli editor :-)
saludos,
M.

 Non lo conosco. Uno dei test che ti conviene fare è questo:
[...]
Questo post "mi ha fatto godere come un maiale" (cit. Star Whores)
Usare editor che supportano utf-8 e in generale standard condivisi
dovrebbe essere una regola da inserire nella costituzione, imposta
dall'ONU e della NATO...
Alla stregua di quotare come si deve...
saludos,
M.

 affermazione possa scatenare una guerra di religione sugli editor 
Gedit e Gvim sono anche per Win, non posso dire nulla riguardo la 
leggerezza.